Sort

Gnu sort -k2 和 -k2,2 的區別

  • March 15, 2020
less file.txt

01 Joe x
02 Marie y
03 Albert p
04 Dave k

我想按第 2 列排序。但是以下兩個命令都給出相同的輸出。很高興知道使用 -k2 和 -k2,2 之間有什麼區別。

less file.txt | sort -k2less file.txt | sort -k2,2

輸出:

03 Albert p
04 Dave k
01 Joe x
02 Marie y

逗號後的規範定義了 a stop position(預設為end of the line

man 1 sort:

-k--key=KEYDEF通過鍵排序;KEYDEF 給出位置和類型

KEYDEF 表示F[.C][OPTS][,F[.C][OPTS]]開始和停止位置,其中 F 是欄位編號,C 是欄位中的字元位置;兩者都是原點 1,停止位置預設為行尾。


例如,考慮一個輸入file.txt

03 Albert p
04 Albert a
  • 如果排序使用-k2,Albert a將放在前面Albert p
  • 使用-k2,2,排序時會忽略第三個鍵

或不同的例子:

03 Albert p
04 Aave k

可以使用以下命令按第二個鍵的第一個字元排序-k2,2.2

$ sort -k2,2.2 file.txt
03 Albert p
04 Aave k
  • 如果-k2使用,Aa將在之前排序Al

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