Sort
‘sort’ 以奇怪的順序產生輸出
考慮以下輸入進行排序:
cat > foo <<EOM D,,5014978 DD,,25 D,I,1972765530 D,Y,4223624 -,Y,71285059 YA,I,2 EOM
現在嘗試執行
sort foo
。在我的任何 Linux 機器(GNU coreutils 版本 6.9-8.26)上嘗試此操作時,輸出未排序。我得到了這個:
$ sort foo D,,5014978 DD,,25 D,I,1972765530 D,Y,4223624 -,Y,71285059 YA,I,2
顯然,所有的行都
D,
應該放在一起,並且-
應該在任何字母之前。在 Cygwin (GNU coreutils 8.5) 下執行時,輸出會被排序。註釋?
排序取決於語言環境;具體來說,它取決於
$LC_COLLATE
(可能被 覆蓋),如果它不存在則$LC_ALL
回退到。$LANG
該命令locale
將向您顯示您正在有效使用的值。參見man 3 strcoll
,man 3 setlocale
等。
LC_COLLATE=C
(或POSIX
根本沒有語言環境)導致嚴格的逐字節比較。
LC_COLLATE=en_US.utf8
導致字母等價排序,忽略標點符號,相同等價類中的字元同等對待。