
Unicode値に基づいてテキストファイルをソートしようとしています。私が知る限り、これは最初の数字、次の文字、次に中国語、日本語、韓国語の表の文字を意味します。ただし、sort
(with LC_ALL=C
)はこの操作に悲惨に失敗します。私のリストから抜粋したものは次のとおりです。
[#ゆうかりんちゃんねる]
[チ→ム♂ツナギ]
[ぞめ]
...
[サディスティックブラウニー]
[ほねとかわとがはなれるおと]
[10th Avenue Cafe]
[2nd Flush]
...
[Alstroemeria Records & Cradle]
[ALTERNATIVE]
[アルトノイラント - Altneuland]
[Amateras Records]
[セブンスヘブンAmmy's]
[anagram]
[Analyze]
...
[Z.S.G TRAXXX]
[α music]
[Яiselied]
[一人華飯スペシャル]
[七瀬屋]
との間でのように読めsort
ない文字を(少なくとも時々は)無視するようです。誰かが使用を提案しましたが失敗しました(それぞれoptionsと使用)。Altneuland
Alternative
Amateras Records
msort
-u c
-u d
-u n
まず、なぜそんなに予期せずに行われますか?第二に、この問題をどのように解決できますか?
追加://私はRaspberry PiでRaspbianを使用しています。 (B)
答え1
どのシステムを使用しますか?
LC_ALL=C sort < your-file.txt
your-file.txt
utf-8エンコーディングで公開されたテキストは、次のようにソートされています。
[#ゆうかりんちゃんねる]
[10th Avenue Cafe]
[2nd Flush]
[ALTERNATIVE]
[Alstroemeria Records & Cradle]
[Amateras Records]
[Analyze]
[Z.S.G TRAXXX]
[anagram]
[α music]
[Яiselied]
[ぞめ]
[ほねとかわとがはなれるおと]
[アルトノイラント - Altneuland]
[サディスティックブラウニー]
[セブンスヘブンAmmy's]
[チ→ム♂ツナギ]
[一人華飯スペシャル]
[七瀬屋]
私のシステムで(GNU coreutils 8.13、Debian EGLIBC 2.13-38で並べ替え)、パイプは次のようにcut -c2 | tr -d \\n | recode ..dump
なります。
UCS2 Mne Description
0023 Nb number sign
0031 1 digit one
0032 2 digit two
0041 A latin capital letter a
0041 A latin capital letter a
0041 A latin capital letter a
0041 A latin capital letter a
005A Z latin capital letter z
0061 a latin small letter a
03B1 a* greek small letter alpha
042F JA cyrillic capital letter ya
305E zo hiragana letter zo
307B ho hiragana letter ho
30A2 A6 katakana letter a
30B5 Sa katakana letter sa
30BB Se katakana letter se
30C1 Ti katakana letter ti
4E00
4E03
sort
これは、GNU coreutils 7.4およびEGLIBC 2.11.1-0ubuntu7.12を使用する既存のシステムでも同様です。
答え2
問題が解決しました。明らかに十分LC_ALL=C
ではありません。export LC_ALL=C
認められるためには文を書かなければなりませんでしたsort
。これは私のせいですが、将来のUnicode分類器に注意する必要があります。