我有一个10列的数据文件,如下所示
ifile.txt 2 4 4 2 1 2 2 4 2 1 3 3 1 5 3 3 4 5 3 3 4 3 3 2 2 1 2 3 4 2 5 3 1 3 1 2 4 5 6 8
我想添加第11列,它将显示沿着10列的每行的平均值。 即AVE(2 4 4 2 1 2 2 4 2 1)等等。 虽然我的下面的脚本运行良好,但我想使它更简单和简短。 对于这方面的任何帮助或build议,我都事先感谢。
awk '{for(i=1;i<=NF;i++){s+=$i;ss+=$i}m=s/NF;$(NF+1)=ss/NF;s=ss=0}1' ifile.txt
这应该工作
awk '{for(i=1;i<=NF;i++)x+=$i;$(NF+1)=x/NF;x=0}1' file
对于每个字段,您将值添加到循环中的x
。
接下来,将字段11设置为x
的总和除以字段NF
的数量。
将x
重置为下一行的零。
1
等同于true,并在awk中执行默认操作,即打印该行。
这是帮助吗?
awk '{for(i=1;i<=NF;i++)s+=$i;print $0,s/NF;s=0}' ifile.txt
要么
awk '{for(i=1;i<=NF;i++)ss+=$i;$(NF+1)=ss/NF;ss=0}1' ifile.txt