2016-10-07 2 views
1

내가 좋아 보이는 파일의 데이터가 정렬을 위해 사용되는 것과 다른 열 표시 : 동일한 ID가 한 사람에 속한다과최대 값으로 정렬 및

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 2는 10 + 8 + 10 = 28과 같은 레코드를 가지며 다른 id와 비교하여 최대 값입니다. 내 쿼리의 결과는 주어진 이름 중 하나 여야합니다. 즉, 마이크 또는 매트 또는 피터 중 하나 여야합니다. awk를 사용하여이 이름을 사용해야합니다.

나는 다음과 같은 시도 :

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

내 대답, 또는 다른 사람, 밖으로 정렬 문제를 했습니까? 그렇다면 투표 수 옆의 빈 녹색 체크/체크 표시를 클릭하여 답변으로 수락하십시오. 그렇지 않은 경우, 나 또는 다른 누군가가 귀하를 더 멀리 도울 수 있도록 작동하지 않은 것을 말하십시오. 감사. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

답변

0

을 문제의 몇 :

  • 머리글 행
  • 어디서든 이름 ($2)를 저장하지 않는 무시하지 않습니다,
  • 당신은 2 END입니다.

난 당신이 원하는 생각 :

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