比较两个altenative行的第一列,如果匹配,则检查两行第2列中哪个值更大,并使用awk打印最多一行

时间:2014-10-28 09:12:33

标签: awk

输入:

anil 14
anil 25
umar 78
umar 13
umar 06 
amritha 06
amritha 25
amritha 17

输出:

anil 25
umar 78
amritha 25

如何使用单个awk命令获取此输出?请帮我看看。

2 个答案:

答案 0 :(得分:0)

如果您喜欢最大的值,请尝试使用此awk

awk '{a[$1]=$2>a[$1]?$2:a[$1]} END {for (i in a) print i,a[i]}' file
amritha 25
umar 78
anil 25

答案 1 :(得分:0)

您可以让sort进行排序,然后让awk进行挑选:

sort -r -k 1,1 -k 2,2  file | awk '{if($1!=prev){prev=$1;print $0}}'

所以,那说......首先按名称排序,然后按第二列排序并颠倒顺序,以便每个名字的最大值首先出现。然后将其传递给awk,如果第一列相对于之前看到的那一列发生了变化,则打印该行。