排序錯誤或誤解

排序錯誤或誤解

假設我有這個文件

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 bara 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

相關內容