如何使用bash计算特定列的总和?

时间:2014-01-24 20:40:31

标签: bash sum

我想使用bash计算特定列的总和而不使用特定列的打印(我想保留管道的所有输出列,只将其中一个加起来!)

4 个答案:

答案 0 :(得分:10)

如果您想要总结第二列,但打印某个管道中的所有列:

cat data | awk '{sum+=$2 ; print $0} END{print "sum=",sum}'

如果文件数据如下:

1 2 3
4 5 6
7 8 9

然后输出为:

1 2 3
4 5 6
7 8 9
sum= 15

答案 1 :(得分:1)

您想要一步一步地连续总结一列吗?

是否必须bash或者您可以使用awk

# file 'fields.txt':
1 foo
2 bar
10 baz
8 boz

# Step by step sum the first column:
awk '{s+=$1; print s, $2}' < fields.txt

# Output:
1 foo
3 bar
13 baz
21 boz

答案 2 :(得分:0)

假设输入数据与@ John1024相同,您可以使用好的cutpaste以及一些算术:

$ cat data | echo $(( $( cut -d' ' -f2 | paste -s -d+ - ) ))
15
$ 

这里的技巧是告诉paste插入+作为分隔符,然后在结果表达式上使用$(( ))执行bash算术。

注意我只是cat输入数据用于说明目的 - 它可以从另一个源传输,或者数据文件也直接传递给cut

答案 3 :(得分:0)

awk '{sum+=$1;} END { print "Total of 1st Column:" sum }1' abc.t6RrMm 

给出如下文件:

12 12 12 
1  1  1
2  2  1
0  1  2

第一列的总数为15