Sort
排序命令 - 數字排序不適用於 csv
Linux 上的GNU
sort
在我的 csv 文件上沒有給出預期的結果。你能幫忙解決情況/問題嗎?輸入文件
[nscruser]$ cat cemp1.txt 10,30 50,900 20,1050
目標我需要對上述文件的第一個欄位進行數字排序
[nscruser]$ sort -t',' -k1 -n cemp1.txt 10,30 50,900 20,1050
預期輸出但我希望輸出如下,因為我正在對第一列進行數字排序
10,30 20,1050 50,900
有人可以讓我知道為什麼會出現差異嗎?
查看手冊頁
sort
,-k, –key=KEYDEF 通過鍵排序;KEYDEF 給出位置和類型
…
KEYDEF 是 F
$$ .C $$$$ OPTS $$$$ ,F[.C $$$$ OPTS $$] 表示開始和停止位置,其中 F 是欄位編號,C 是欄位中的字元位置;兩者都是原點 1,停止位置預設為行尾。如果 -t 和 -b 均無效,則欄位中的字元從前一個空格的開頭開始計數。OPTS 是一個或多個單字母排序選項$$ bdfgiMhnRrV $$,它會覆蓋該鍵的全域排序選項。如果沒有給出鍵,則使用整行作為鍵。使用 –debug 來診斷不正確的密鑰使用。
首先,您可以
--debug
按照建議使用,$ sort -t',' -k1 -n --debug cemp1.txt sort: text ordering performed using ‘en_IE.UTF-8’ sorting rules sort: key 1 is numeric and spans multiple fields 10,30 _____ _____ 50,900 ______ ______ 20,1050 _______ _______
這給了我們一個線索:“鍵 1 是數字並且跨越多個欄位”。
正如手冊頁所說,“停止位置預設為行尾”。所以你需要添加一個停止位置:
$ sort -t',' -k1,1 -n cemp1.txt 10,30 20,1050 50,900