我正试图从俄罗斯短篇小说中提取一个单词列表.
#!/bin/sh
export LC_ALL=ru_RU.utf8
sed -re 's/\s+/\n/g' | \
sed 's/[\.!,—()«»;:?]//g' | \
tr '[:upper:]' '[:lower:]' | \
sort | uniq
Run Code Online (Sandbox Code Playgroud)
然而,这一tr步骤并没有降低西里尔字母大写.我以为我在使用便携式角色课时很聪明!
$ LC_ALL=ru_RU.utf8 echo "?" | tr [:upper:] [:lower:]
?
Run Code Online (Sandbox Code Playgroud)
如果它是相关的,我通过从Chrome浏览器窗口复制粘贴到Vim获得俄语文本.它看起来正好在屏幕上(Putty终端).这是在Cygwin的bash shell中 - 它应该与Linux上的Bash完全相同(应该!).
什么是在管道中小写unicode文本的便携,可靠的方法?
Lev*_*sky 12
这是我在维基百科上发现的(没有任何参考):
大多数版本(
tr包括GNU tr经典Unixtr)都使用单字节字符,并且不符合Unicode.Heirloom Toolchest实现是一个例外,它提供基本的Unicode支持.
此外,这是旧的,但相关.
正如我在评论中提到的,sed似乎有效(GNU sed至少):
$ echo '????' | sed 's/[[:upper:]]*/\L&/'
????
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17633 次 |
| 最近记录: |