首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对选定的列进行求和?

如何对选定的列进行求和?
EN

Stack Overflow用户
提问于 2017-05-10 01:39:24
回答 4查看 45关注 0票数 0

我想对文本文件中的多个列求和,如下所示:

代码语言:javascript
复制
GeneA Sample  34  7  8   16
GeneA Sample  17  7  10  91
GeneA Sample  42  9  8   11

我想在第3-5列的底部生成总和,因此它看起来如下所示:

代码语言:javascript
复制
GeneA Sample  34   7   8   16
GeneA Sample  17   7  10   91
GeneA Sample  42   9   8   11
              93  23  26 

我可以对单个列使用它,但不知道如何指定列的范围:

代码语言:javascript
复制
awk -F'\t' '{sum+=$3} END {print sum}' input file> out
EN

回答 4

Stack Overflow用户

发布于 2017-05-10 01:43:12

最简单的方法就是对每一列重复求和。

代码语言:javascript
复制
awk -F '\t' '{
    s3 += $3
    s4 += $4
    s5 += $5
}
END {
    print s3, s4, s5
}' input_file > out
票数 1
EN

Stack Overflow用户

发布于 2017-05-10 01:47:42

在awk中:

代码语言:javascript
复制
$ awk '
{
    for(i=3;i<=NF;i++)                       # loop wanted fields
        s[i]+=$i }                           # sum to hash, index on field #
END { 
    for(i=3;i<=NF;i++)                       # same old loop
        printf "%s%s",s[i],(i==NF?ORS:OFS) } # output
' file
93 23 26 118

目前,for循环遍历每个数值字段。如果需要,请更改参数。

票数 1
EN

Stack Overflow用户

发布于 2017-05-10 03:09:30

代码语言:javascript
复制
$ awk -v OFS='\t' '{s3+=$3; s4+=$4; s5+=$5; $1=$1} 1; 
              END  {print "","",s3,s4,s5}' file

GeneA   Sample  34      7       8       16
GeneA   Sample  17      7       10      91
GeneA   Sample  42      9       8       11
                93      23      26
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43876483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档