Bash:如何将除第一列之外的所有列相加

时间:2017-05-22 10:52:15

标签: bash shell awk

我需要在bash脚本中对除第一列之外的所有列求和。请帮忙,因为我是脚本编写的初学者。

COL1    COL2    COL3    COL4    COL5

APR     674070  672554  813355  809413
APR     674070  672554  813355  809413
APR     674070  672554  813355  809413
APR     375309  374466  460572  457776
APR     254161  253655  316361  314093
APR     234389  233874  295457  293222
APR     252482  251926  319122  316918

输出应如下所示。第一列(即APR)对于所有行都是相同的,我不需要打扰它。

期望的结果是

APR,3138551,3131583,3831577,3810248

3138551,3131583,3831577,3810248

我尝试了下面的命令,但是我需要超过20列,而且我的方法对于那么多列来说太长了。

cat file | awk -F ',' '{a=a+$2}{b=b+$3}{c=c+$4}{d=d+$5} END { print "APR"","a","b","c","d }'

如果在bash中存在替代方式,请告诉我。

1 个答案:

答案 0 :(得分:3)

ggplot(data = artSlope, aes(x = slope, y = art)) +
    geom_point() + 
    theme(panel.grid.major = element_blank(), 
            panel.grid.minor = element_blank(), 
            panel.background = element_blank(), 
            axis.line = element_line(colour = "black")) + 
    labs(y = "species", title = "phenological shifts") +  
    geom_vline(xintercept = 0) + 
    geom_errorbarh(aes(xmax = slope + se, xmin = slope - se))