Sort
實用程序“排序”如何工作?(為什麼它不像我認為的那樣工作?)
我有 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
從欄。