Sort

排序 -k 大於鍵數

  • October 19, 2018

我正在嘗試使用 sort 命令了解我們項目中使用的現有腳本

sort -t= -nr -k3 nos 

帶有空格和數字的文件在哪裡nos,例如:997 998 999 1000

輸出是

999
998
997
1000

我不明白為什麼 1000 最後出現。我懷疑這是因為-k3每個條目只有鍵時的參數,但我在文件中找不到任何內容來說明當指定的鍵位置不存在時它的行為方式。

直到文件中包含 4 位數字,這給出了按數字降序對數字進行排序的預期結果。

當您指定一個不存在的排序欄位時,對於每個存在的比較,排序鍵將為空sort。這意味著鍵將始終比較相等。這觸發了標準規範的sort一部分,即整行應該用作排序鍵,並且沒有任何選項 -d-f-i-n-k保持有效。

這反過來意味著該命令將與

sort -r nos

它對數據進行反向字典排序(-t=這裡沒有效果)。由於 order before以相反的字典順序在997前面。1000``9``1


來自 POSIX 標準的相關位:

-k keydef

$$ … $$ 除非-u指定了選項,否則比較相等的行應被排序,就好像沒有選項-d, -f, -i,-n-k存在(但-r仍然有效,如果指定)並且行中的所有字節對比較。仍然比較相等的行的寫入順序未指定

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