Sort
排序時逗號在數字之前嗎?
我有一個文件
foo
,其內容是140,22 236,224 2,86
如果我對它進行排序,
sort foo
我會得到相同的結果。這告訴我,,
在數字之後,或者至少在,
之後3
。矛盾的是,會發生以下情況:
$echo -e "2\n,\n3" | sort , 2 3
這告訴我
,
之前2
的。我不明白。有人可以解釋一下嗎?
排序順序取決於您的 locale,因此可能會有一些奇怪的解釋。我在我的系統上得到與你相同的結果。在這裡,語言環境忽略逗號。因此,如果我們將
276
和添加296
到您的列表中:$ sort /tmp/tosort 140,22 236,224 276 2,86 296
這也解釋了第二個命令的結果。逗號不是首先排序的,而是被忽略的。因此,它本質上是對一個空字元串進行排序。如果您在測試中添加文字空字元串,您也會在開頭看到它。
$ echo -e "2\n,\n3\n" | sort , 2 3
(我不清楚為什麼空字元串在逗號之前。我懷疑在平局時使用逗號。)
使用“標準”POSIX 語言環境,您將獲得更可預測的結果。
$ export LC_ALL=C $ sort foo 140,22 2,86 236,224