我有一个输入文件,其中包含以下数据:
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
附言你真的不必管
cat
输出到 sort
...
关于shell - 根据第 1 列和第 2 列的值对数据进行排序,并仅输出第 1 列和第 2 列的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41402419/