2017-10-19 92 views
0

下面顯示的文件按不同順序包含相同的一組行。事實上,他們都已經通過sort <filename>排序(你可以嘗試自己排序);然而,結果顯示第4和第5行相互切換。這怎麼會發生?爲什麼終端sort命令按不同的順序排序文件?具有相同文本集合的文件的不同終端「排序」結果

文件1

w_±_± w_±_± 1 
w_˚ w_˚ 1 
w_ฌ w_ฌ 1 
w_㎡ w_㎡ 1 
w_ℓ w_ℓ 1 

文件2:

w_±_± w_±_± 1 
w_˚ w_˚ 1 
w_ฌ w_ฌ 1 
w_ℓ w_ℓ 1 
w_㎡ w_㎡ 1 
+1

這類問題**真的**需要指定您正在使用的語言環境,特別是關於字符類型和整理順序。 –

回答

0

非常有趣!它必須是與語言環境設置相關的內容。我可以得到它的C語言環境工作:

$ LC_ALL=C sort file1 
w_±_± w_±_± 1 
w_˚ w_˚ 1 
w_ฌ w_ฌ 1 
w_ℓ w_ℓ 1 
w_㎡ w_㎡ 1 

$ LC_ALL=C sort file2 
w_±_± w_±_± 1 
w_˚ w_˚ 1 
w_ฌ w_ฌ 1 
w_ℓ w_ℓ 1 
w_㎡ w_㎡ 1 

起初,我以爲這可能是由於字符代碼的長度,所以也許字符組成的兩個字節,其中第一個字節是相同。讓我們研究一下的是:

$ printf 'w_ℓ w_ℓ 1' |hd; printf 'w_㎡ w_㎡ 1' |hd 
00000000 77 5f e2 84 93 20 77 5f e2 84 93 20 31   |w_... w_... 1| 
0000000d 
00000000 77 5f e3 8e a1 20 77 5f e3 8e a1 20 31   |w_... w_... 1| 
0000000d 

e2 84e3 8e,所以這不是什麼怎麼回事。

這可能是因爲您的區域設置指示出於某種原因跳過這些字符。對於en_US.UTF-8,至少在GNU coreutils 8.28中有sort

相關問題