ファイル内のすべての文字を識別してみてください。
ファイルには以下sample
が含まれます。
a eɪ
abandon əˈbændən
ability əˈbɪləti
able ˈeɪbəl
able ˈeɪbl
abortion əˈbɔrʃən
abortion əˈbɔrʃn
about əˈbaʊt
above əˈbʌv
abroad əˈbrɔd
ロケールが正しく設定されていることを確認してください。
$ echo $LANG
en_US.UTF-8
2番目のフィールドのコマンドを取得し、文字ごとに分割して数を数えます。
$ cat sample | awk '{print $2}' | grep -o . | sort | uniq -c | sort -n
1 a
1 æ
1 i
1 v
2 d
2 t
3 e
3 l
3 ɔ
3 r
4 n
9 b
11 ə
17 ɪ
ʃ
そしてどこˈ
?結合文字や特別な内容はありません。他のUTF-8文字(たとえば、、ɔ
およびə
)も取得されます。ɪ
ちなみに、使用結果は「\n」行を追加する点を除けばsed 's/\(.\)/\1\n/g'
ほぼ同じです。grep -o .
私が逃したものはありますか? grepには隠されたUTF-8オプションがありますか?
重要な場合Ubuntu 12.04.2 LTS
。
ベストアンサー1
問題は、ロケールの照合情報にsort
あり、それを使用することです。uniq
両方のコマンドに対してロケールをオフにすることは有効です。
cat sample | awk '{print $2}' | grep -o . | LC_ALL=C sort | LC_ALL=C uniq -c | sort -n
1 ʊ
1 ʌ
1 a
1 æ
1 i
1 v
2 ʃ
2 d
2 t
3 e
3 l
3 ɔ
3 r
4 ɪ
4 n
9 ˈ
9 b
11 ə