![Unix Awk 그룹별](https://linux55.com/image/36173/Unix%20Awk%20%EA%B7%B8%EB%A3%B9%EB%B3%84.png)
누구든지 사용자 이름별로 그룹화하고 값을 해당 특정 사용자 이름의 행 수로 나눈 값을 합산하는 방법을 말해 줄 수 있습니까? 예를 들어 다음 예입니다.
root 25 oracle 25 batch 30 griduser 20 admin 35
root 55 oracle 45 batch 30 griduser 10
oracle 35 batch 30 griduser 30 xuser 45 admin 85
내 출력은 다음과 같아야합니다.
root 40 oracle 35 batch 30 griduser 20 xuser 45 admin 60
미리 감사드립니다
답변1
출력 순서가 마음에 들지 않으면 다음을 수행하십시오.
$ awk '{for(i=1;i<NF;i+=2){a[$i]+=$(i+1);b[$i]+=1}}
END {
for(i in a){
printf "%s %d ",i,a[i]/b[i]
}
printf "\n"
}' file
oracle 35 griduser 20 admin 60 root 40 xuser 45 batch 30