按最大值排序并显示与用于排序

时间:2016-10-07 05:52:42

标签: awk

我的文件中的数据如下所示:

id Name     records 
1  joe      3
1  james    4
1  jacky    4
2  mike     10
2  mat      8
2  peter    10
3  bob      3
3  alice    1
3  wis      1

具有相同ID的所有记录属于一个人,但名称可能不同。我需要找到最大记录的id。在上面,例如,id 2具有等于10 + 8 + 10 = 28的记录,并且是与其他id相比的最大值。 因此,我的查询结果应该是任何一个给定的名称,即mike或mat或peter,我需要使用awk;

我尝试了以下内容:

awk '{arr[$1]+=$3} END {for (i in arr){if(arr[i]>max) max=arr[i] ; name=i} } END {print name}'

1 个答案:

答案 0 :(得分:0)

有几个问题:

  • 你没有忽略标题行
  • 您没有在任何地方保存名称($2),
  • 你有2 END s。

我想你想要这个:

awk 'NR>1{count[$1]+=$3;name[$1]=$2;} END{for(i in count){if(count[i]>m){m=count[i]; n=name[i]}};print m,n}' file

28 peter