Unix Awk グループ別

Unix Awk グループ別

誰でもユーザー名でグループ化し、その値をその特定のユーザー名の行数で割った値を合計する方法を教えてください。たとえば、次の例です。

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 

おすすめ記事