从shell脚本不同的列平均(Average from different columns in s

2019-10-24 02:04发布

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

Answer 1:

这应该工作

awk '{for(i=1;i<=NF;i++)x+=$i;$(NF+1)=x/NF;x=0}1' file

对于每个字段,你的价值添加到x中循环。

接下来,您在设置字段11的总和x田野数除以NF

重置x为零下一行。

1等于真,并且执行在AWK的默认动作是打印线。



Answer 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


文章来源: Average from different columns in shell script