如何使用awk计算输入的平均值?

时间:2015-06-16 14:43:53

标签: linux bash awk

我有一个包含许多值的文件:

10 ; 20 ; 30 ; 40 ;
20 ; 11 ; 15 ; 70 ;
60 ; 50 ; 80 ; 84 ;

如何使用awk计算COLUMNS中的平均值:

所需的输出:

30;27;41.6;64.66;

欢迎任何解决方案,包括bash。

2 个答案:

答案 0 :(得分:1)

在awk中,您可以准确地翻译您要求的内容:

 awk -F\; 'BEGIN{
     ORS=";"
 }
 {
     for (i=1;i<=NF;++i) {
         sum[i] += $i
     }
 }
 END {
     for (i=1;i<=NF;++i) {
         print sum[i]/NR
     }
     print "\n"
 }'

答案 1 :(得分:1)

您可以构建一个数组来存储列的总和,并在END块中计算平均值:

awk -F';' '{for(i=1;i<=NF;i++)a[i]+=$i}
     END{for(i=1;i<=NF;i++)printf "%.2f%s",a[i]/NR,i==NF?RS:FS}' file

输出:

30.00;27.00;41.67;64.67