我有一个包含许多值的文件:
10 ; 20 ; 30 ; 40 ;
20 ; 11 ; 15 ; 70 ;
60 ; 50 ; 80 ; 84 ;
如何使用awk计算COLUMNS中的平均值:
所需的输出:
30;27;41.6;64.66;
欢迎任何解决方案,包括bash。
答案 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