Sort

排序時逗號在數字之前嗎?

  • June 16, 2019

我有一個文件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

引用自:https://unix.stackexchange.com/questions/525321