유니코드 값을 기준으로 행 정렬

유니코드 값을 기준으로 행 정렬

유니코드 값을 기준으로 텍스트 파일을 정렬하려고 합니다. 내가 아는 한, 이것은 먼저 숫자, 그 다음 문자, 그 다음 중국어, 일본어, 한국어 표의 문자를 의미합니다. 그러나 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 및 사용 ) .AltneulandAlternativeAmateras Recordsmsort-u c-u d-u n

첫째, 왜 그렇게 예기치 않게 수행됩니까? 둘째, 이 문제를 어떻게 해결할 수 있나요?

추가:// 저는 Raspberry Pi에서 Raspbian을 사용하고 있습니다. (B)

답변1

어떤 시스템을 사용하시나요?

LC_ALL=C sort < your-file.txt

your-file.txtutf-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. 이것은 내 잘못이지만 향후 유니코드 분류기에 주의해야 합니다.

관련 정보