ロシアの短編小説から単語リストを抽出しようとしています。
#!/bin/sh
export LC_ALL=ru_RU.utf8
sed -re 's/\s+/\n/g' | \
sed 's/[\.!,—()«»;:?]//g' | \
tr '[:upper:]' '[:lower:]' | \
sort | uniq
ただし、tr
ステップは、キリル文字の大文字を小文字にするものではありません。ポータブルキャラクタークラスを上手に使っていると思いました!
$ LC_ALL=ru_RU.utf8 echo "Г" | tr [:upper:] [:lower:]
Г
関連する場合は、ChromeブラウザウィンドウからVimにコピーアンドペーストしてロシア語のテキストを取得しました。画面(PuTTY端末)に表示されます。これはCygwinのbashシェルにあります- Linux上のBashと同じように機能するはずです(そうすべきです!)。
パイプ内のUnicodeテキストを小文字にするポータブルで信頼性の高い方法は何ですか?
これは私が ウィキペディア で見つけたものです(ただし、参照なしで):
GNU tr
やクラシックUnixtr
を含むtr
のほとんどのバージョンは、シングルバイト文字で動作し、Unicodeに準拠していません。例外は Heirloom Toolchest 実装で、基本的なUnicodeサポートを提供します。
また、 this は古いですが、関連しています。
コメントで述べたように、sed
は機能しているようです(少なくともGNU sed
):
$ echo 'СТЭК' | sed 's/[[:upper:]]*/\L&/'
стэк