我有一个包含以下数据的输入文件:
AUD 100 20
USD 200 30
INR 10 20
AUD 100 30
USD 200 40
EUR 50 60
EUR 50 70
AUD 100 11
USD 200 55
INR 10 35
我跑:
cat filename | sort -u -k1,2
它给我的输出如下:
AUD 100 20
EUR 50 60
INR 10 20
USD 200 30
所以我了解的是,sort -u k1,2
该数据根据列#1和#2中的值的唯一组合对数据进行排序并给出输出。现在基于此理解,我运行:
cat filename | sort -u -k1
以获得基于列#1中唯一值的输出。所以我期望这个输出:
AUD 100 20
EUR 50 60
INR 10 20
USD 200 30
但是实际输出是:
AUD 100 11
AUD 100 20
AUD 100 30
EUR 50 60
EUR 50 70
INR 10 20
INR 10 35
USD 200 55
USD 200 30
USD 200 40
有人可以解释一下该sort -u -km,n
选项发生了什么吗?
密钥字段号用指定-k <start>,<end>
。如果未指定,<end>
则默认为行尾。所以:
sort -u -k 1 filename
将基于整行对唯一值进行排序和打印。如果您只想考虑第一个关键(您的预期结果),则必须:
sort -u -k 1,1 filename
PS,您实际上不必将cat
输出通过管道传输到sort
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句