web-dev-qa-db-ja.com

tr [:upper:] [:lower:]キリル文字付き

ロシアの短編小説から単語リストを抽出しようとしています。

#!/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テキストを小文字にするポータブルで信頼性の高い方法は何ですか?

15
slim

これは私が ウィキペディア で見つけたものです(ただし、参照なしで):

GNU trやクラシックUnixtrを含むtrのほとんどのバージョンは、シングルバイト文字で動作し、Unicodeに準拠していません。例外は Heirloom Toolchest 実装で、基本的なUnicodeサポートを提供します。

また、 this は古いですが、関連しています。

コメントで述べたように、sedは機能しているようです(少なくともGNU sed):

$ echo 'СТЭК' | sed 's/[[:upper:]]*/\L&/'
стэк
11
Lev Levitsky