2013-03-20 100 views
0

平均I具有在那个文件中像这样的输入文件中的每个列由标签空间查找字段中

22 2222 . T C . . ;AA=1;AFE=1;ASNE=1;EUN=1;AFW=1;MED=1;LAT=1; 
22 222 . T C . . ;AA=2;AFE=2;ASNE=2;EUN=2;AFW=2;MED=2;LAT=2; 

分离和我需要的输出如下

22 2222 . T C . . ;AA=1;AFE=1;ASNE=1;EUN=1;AFW=1;MED=1;LAT=1;AVG=1; 
22 222 . T C . . ;AA=2;AFE=2;ASNE=2;EUN=2;AFW=2;MED=2;LAT=2;AVG=2; 

在哪里AVG是第8列所有领域的平均值。

回答

0

这里是一个办法:

awk '{c=0;for(i=2;i<=NF;i++){split($i,d,"=");c+=d[2]}$NF="AVG="c/(NF-2)FS}1' FS=';' OFS=';' file 
    22 2222 . T C . . ;AA=1;AFE=1;ASNE=1;EUN=1;AFW=1;MED=1;LAT=1;AVG=1; 
    22 222 . T C . . ;AA=2;AFE=2;ASNE=2;EUN=2;AFW=2;MED=2;LAT=2;AVG=2;