shell脚本中不同列的平均值

我有一个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