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 

相關內容