在awk中对一列进行求和,并打印所述列的每一行除以总和

时间:2014-08-14 15:03:45

标签: awk

我有一列我要转换成频率的计数。这将第一列相加并打印总和:

awk '{ sum+=$1 } END {print sum}'

但是,我无法弄清楚如何用总和(以单行格式)划分所述文件的每一行。能够指定小数位数的加分点。

示例输入:

0
0
0
0
1
0
5
0

输出应为:

0
0
0
0
0.166666667
0
0.833333333
0

最好还可以调整小数位数,例如:

0.00
0.00
0.00
0.00
0.16
0.00
0.83
0.00

1 个答案:

答案 0 :(得分:2)

扫描输入两次:

awk 'NR==FNR{sum+= $1; next}{printf("%4.2f\n", $1/sum)}' input input