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