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

如何使用bash计算特定列的和?,bash,sum,Bash,Sum,我想使用bash计算特定列的和,而不使用打印该特定列的命令(我想保留管道中的所有输出列,只对其中一列求和!)是否要一步一步地连续求和一列 is必须是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 b

我想使用bash计算特定列的和,而不使用打印该特定列的命令(我想保留管道中的所有输出列,只对其中一列求和!)

是否要一步一步地连续求和一列

is必须是
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
#文件“fields.txt”:
一福
2巴
10巴
8波兹
#对第一列逐步求和:
awk'{s+=$1;打印s,$2}'
如果您想对第二列进行求和,但要打印某些管道中的所有列:

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

假设输入数据与@John1024相同,您可以使用良好的ol'
cut
paste
以及一些算法:

$ cat data | echo $(( $( cut -d' ' -f2 | paste -s -d+ - ) ))
15
$ 
这里的诀窍是告诉
paste
插入
+
作为分隔符,然后对结果表达式使用
$(())
执行bash算法

注意:我只是将输入数据
cat
ing用于说明目的-它可以从另一个源通过管道传输,也可以将数据文件直接传递到
cut

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

第1列的总计为
15

显示示例,几行输入和所需输出。