awk以参考column1中的name来取第2列中的值的平均值

时间:2013-10-14 14:17:30

标签: bash awk

RAM,80  
GAM,20  
DAM,30  
RAM,40  
DAM,20  
GAM,30 

如何使用awk显示RAM,GAM和DAM的平均值?

1 个答案:

答案 0 :(得分:2)

像这样,例如:

$ awk -F, '{a[$1]+=$2; ++b[$1]} END {for (i in a) print i, a[i]/b[i], "("b[i]" values)"}' file
DAM 25 (2 values)
GAM 25 (2 values)
RAM 60 (2 values)

解释

{a[$1]+=$2; ++b[$1]}

  • 将z值(第2列)存储在数组a中。
  • 将每个x值(第1列)的元素数量存储在数组b中。

END {for (i in a) print i, a[i]/b[i]}'

  • 打印结果循环存储在数组中的值。