我有一个包含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)等。虽然我的后续脚本运行良好,但我想让它更简单和简短。我提前感谢您提供这方面的任何帮助或建议。
awk '{for(i=1;i<=NF;i++){s+=$i;ss+=$i}m=s/NF;$(NF+1)=ss/NF;s=ss=0}1' ifile.txt
答案 0 :(得分:4)
这应该有效
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中执行默认操作,即打印该行。
答案 1 :(得分:2)
这是帮助
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