Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个可选行的第一列,如果匹配,则检查两行的第2列中哪个值更大,并使用awk打印最大一行_Awk - Fatal编程技术网

比较两个可选行的第一列,如果匹配,则检查两行的第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}}'