ユーザー名に基づいてグループ化し、値を合計してその特定のユーザー名の行数で割る方法を教えていただけますか。たとえば、次のようになります。
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