Sort

實用程序“排序”如何工作?(為什麼它不像我認為的那樣工作?)

  • June 29, 2018

我有 2 個文本文件:

$ cat /tmp/test1
"AAP" bar
"AEM" bar
"AA" bar
"AEO" bar
"A" bar

$ cat /tmp/test2
"AEM" foo
"AAP" foo
"A" foo
"AEO" foo
"AA" foo

我想對它們進行排序

$ sort /tmp/test1
"AA" bar
"AAP" bar
"A" bar              <-- "A" is in position 3
"AEM" bar
"AEO" bar

$ sort /tmp/test2
"AA" foo
"AAP" foo
"AEM" foo
"AEO" foo
"A" foo              <-- "A" is in position 5

為什麼"A"最終在位置 3 in/tmp/test1位置 5 in/tmp/test2

我的期望是每列的每個字元都會被比較。

因此,在比較第 3 列時'A',將相互比較,這將是該測試數據最終排序順序的最終決定因素'E''"'

sort顯然我的期望是錯誤的,那麼如果不是按照我期望的方式工作,那麼它是如何工作的呢?

是否有命令行選項sort或其他一些實用程序可以用來獲得我想要的排序順序?

您需要更改排序規則區域設置。您描述的行為是典型的en_US和許多其他語言環境。修復:

LC_ALL=C   sort  /tmp/test1

此答案中的更多內容:https ://stackoverflow.com/questions/6531674/linux-sort-unexpected-output

可能它只查看字母字元?因此,A在下一個字母字元的情況下是b從欄。

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