less file.txt
01 Joe x
02 Marie y
03 Albert p
04 Dave k
我想按第 2 列排序。很高興知道使用 -k2 和 -k2,2 之間有什麼區別。
less file.txt | sort -k2
和less file.txt | sort -k2,2
輸出:
03 Albert p
04 Dave k
01 Joe x
02 Marie y
答案1
逗號後面的規範定義了 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