This question already has an answer here:
Find the average of fields in the columns [closed]
                                
                                    (1个答案)
                                
                        
                                6年前关闭。
            
                    
我在该文件中有一个这样的输入文件,每一列都由制表符空间分隔

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列中所有字段的平均值。

最佳答案

正在进行中:

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;

关于linux - 在[重复项]中找到字段的平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15521273/

10-11 21:40