我有一个这样的记录
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;
Where AF
是第 8 列中所有字段的平均值。
AF=(1+2+3+4)/4=2.5
你输入的数据非常好:空格、逗号、分号...试试这个:
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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)