我是Linux shell命令的新手,我正在学习sort
命令。
输入文件如下:
a 1
b 2
a 0
我想将第一列作为排序键并使用'-u'选项删除“a 0”行,因为它与第一行具有相同的键,命令手册中说'-u'将只保持平等的第一个。
当我使用命令sort -k 1 -u text
时,结果是:
a 0
a 1
b 0
但是,当我使用命令sort -k 1, 1 -u text
时,输出为:
a 1
b 2
谁能告诉我这两个命令之间的区别是什么?
答案 0 :(得分:2)
-k 1
将从字段1排序到行尾。
-k 1,1
将仅按第一个字段排序。你定义了停止位置。
这就是你得到不同输出的原因。
在排序手册页中阅读KEYDEF
。
答案 1 :(得分:2)
-k
选项将键设置为从位置[到位置]的字段。所以-k1
不具有描述性(实际上无用),因为它定义了默认的整个记录。通过设置-k1,1
,您要求排序仅使用第一个字段作为键,从而获得所需的结果。