假設我有這個文件
b 10 foo
a 10 bar
a 2 bar
我想按第三列按字母順序排序。如果有平局,我想按第二列按數字排序。在 UNIX 排序程式的手冊頁中,您可以找到以下內容:
> sort -k3 -k2n a
這使
a 2 bar
a 10 bar
b 10 foo
哪個是對的。
現在,我真正想要的是按第一列按字母順序排序,如果出現平局,則按第二列按數字排序。誰能向我解釋為什麼
> sort -k1 -k2n a
給予
a 10 bar
a 2 bar
b 10 foo
哪個是明顯的錯誤?
答案1
您的範例未按預期工作的原因是sort
考慮了所有位置後指定的也是如此。在您的範例中,字典對before-k1
字串進行排序,並且您不需要平局。a 10 bar
a 2 bar
您需要明確指定排序鍵的限制,如手冊頁所述:
-k, --key=POS1[,POS2]
start a key at POS1, end it at POS2 (origin 1)
例子:
$ sort -k1,1 -k2n theFile
a 2 bar
a 10 bar
b 10 foo