比较两个可选行的第一列,如果匹配,则检查两行的第2列中哪个值更大,并使用awk打印最大一行
输入: 输出:比较两个可选行的第一列,如果匹配,则检查两行的第2列中哪个值更大,并使用awk打印最大一行,awk,Awk,输入: 输出: anil 14 anil 25 umar 78 umar 13 umar 06 amritha 06 amritha 25 amritha 17 如何使用单个awk命令获得此输出?请帮助我了解这一点。如果您喜欢最大值,请尝试此awk 您可以让sort进行排序,然后让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
anil 14
anil 25
umar 78
umar 13
umar 06
amritha 06
amritha 25
amritha 17
如何使用单个awk命令获得此输出?请帮助我了解这一点。如果您喜欢最大值,请尝试此awk 您可以让sort进行排序,然后让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
所以说。。。首先按名称排序,然后按第二列排序,并颠倒顺序,使每个名称中的最大值排在第一位。然后将其传递给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
sort -r -k 1,1 -k 2,2 file | awk '{if($1!=prev){prev=$1;print $0}}'