我有一个包含两列的文件,如下所示:
1 3
1 4
2 3
3 3
4 3
4 4
我想将它变成一个在第一列中具有唯一值的文件,并且重复行只保留第二列中具有最大值的行,因此新文件如下所示:
1 4
2 3
3 3
4 4
有关如何使用bash / awk / etc实现此目的的任何想法?
答案 0 :(得分:2)
使用awk
您可以使用关键数组来管理它,该关键数组的键为列-1,值为列-2的最大值:
awk '$2 > a[$1]{a[$1] = $2} END{for (i in a) print i, a[i]}' file
1 4
2 3
3 3
4 4
答案 1 :(得分:1)
请问您可以尝试关注并告诉我这是否对您有所帮助,它会为您提供仅1美元的最新值以及与Input_file的$ 1相同的非重复值。
awk '!a[$1]{b[++i]=$1} {a[$1]=$0;} END{for(j=1;j<=i;j++){print a[b[j]]}}' Input_file
答案 2 :(得分:1)
使用sort:
sort -k2,2rn file|sort -uk1,1n