我想对文本文件中的多个列求和,如下所示:
GeneA Sample 34 7 8 16
GeneA Sample 17 7 10 91
GeneA Sample 42 9 8 11我想在第3-5列的底部生成总和,因此它看起来如下所示:
GeneA Sample 34 7 8 16
GeneA Sample 17 7 10 91
GeneA Sample 42 9 8 11
93 23 26 我可以对单个列使用它,但不知道如何指定列的范围:
awk -F'\t' '{sum+=$3} END {print sum}' input file> out发布于 2017-05-10 01:43:12
最简单的方法就是对每一列重复求和。
awk -F '\t' '{
s3 += $3
s4 += $4
s5 += $5
}
END {
print s3, s4, s5
}' input_file > out发布于 2017-05-10 01:47:42
在awk中:
$ 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循环遍历每个数值字段。如果需要,请更改参数。
发布于 2017-05-10 03:09:30
$ 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 26https://stackoverflow.com/questions/43876483
复制相似问题