查找列中字段的平均值

时间:2013-03-20 09:31:43

标签: linux sed awk

我有这样的记录

1  11  11  T  A  0  0  A=1;B=2,C=3;D=4;

有8列,每列由制表空间

分隔

我需要输出就像这样

1  11  11  T  A  0  0  A=1;B=2,C=3;D=4;AF=2.5;

其中AF是第8列中所有字段的平均值。

AF=(1+2+3+4)/4=2.5

1 个答案:

答案 0 :(得分:0)

你输入的数据非常好:空格,逗号,分号......试试这个:

awk -F'[;, ]' '{n=0;s=0;for(i=1;i<=NF;i++)
if($i~/=[0-9]+/){split($i,t,"=");n++;s+=t[2]; } 
print $0"AF="s/n";"
}' file

包含您的数据:

kent$  echo "1 11 11 T A 0 0 A=1;B=2,C=3;D=4;"|awk -F'[;, ]' '{n=0;s=0;for(i=1;i<=NF;i++) 
if($i~/=[0-9]+/){split($i,t,"=");n++;s+=t[2]; }
print $0"AF="s/n";"
}' 
1 11 11 T A 0 0 A=1;B=2,C=3;D=4;AF=2.5;