AWK:如何在不删除END的情况下重复使用NR次的结果?

时间:2010-04-21 23:17:20

标签: awk

我如何获得所有差异,而不只是一个?我想使用第三列中每个项目的计算结果。困境在于,如果我删除END,我可以打印$3但不能ave。如果我离开END我有ave但不是所有差异。

awk '{sum+=$3} END {ave=sum/NR} END {print $3-ave}' coriolis_data
-0.00964   // I want to see the rest differences, how?

coriolis_data

.105    0.005   0.9766  0.0001  0.595   0.005
.095    0.005   0.9963  0.0001  0.595   0.005
.115    0.005   0.9687  0.0001  0.595   0.005
.105    0.005   0.9693  0.0001  0.595   0.005
.095    0.005   0.9798  0.0001  0.595   0.005
.105    0.005   0.9798  0.0001  0.595   0.005
.095    0.005   0.9711  0.0001  0.595   0.005
.110    0.005   0.9640  0.0001  0.595   0.005
.105    0.005   0.9704  0.0001  0.595   0.005
.090    0.005   0.9644  0.0001  0.595   0.005

1 个答案:

答案 0 :(得分:3)

然后您创建另一个数组来存储$3值。并且只使用1个END

awk '{sum+=$3;s3[NR]=$3} END {ave=sum/NR; for(i=1;i<=NR;i++)print s3[i]-ave}' coriolis_data