-1

私はこのような記録を持っています

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;

AF8列目のすべてのフィールドの平均はどこにありますか。

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

1 に答える 1

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;
于 2013-03-20T09:41:15.030 に答える