Sort
按 unicode 值對行進行排序
我正在嘗試按其 Unicode 值對文本文件進行逐行排序。據我所知,這首先意味著數字,然後是字母,然後是 CJK 表意文字。但是,
sort
(withLC_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
忽略(至少有時)它無法讀取的字元,因為Altneuland
確實會在Alternative
and之間Amateras Records
。有人建議使用msort
,但也失敗了(分別使用選項-u c
、-u d
和-u n
)。首先,為什麼它表現得如此出乎意料?其次,我該如何解決這個問題?
Add:// 我在樹莓派上使用 Raspbian (B)
你用的是什麼系統?
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的舊系統上相同