유니코드 값을 기준으로 텍스트 파일을 정렬하려고 합니다. 내가 아는 한, 이것은 먼저 숫자, 그 다음 문자, 그 다음 중국어, 일본어, 한국어 표의 문자를 의미합니다. 그러나 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
. 이것은 내 잘못이지만 향후 유니코드 분류기에 주의해야 합니다.