如何使用bash计算特定列的和?
我想使用bash计算特定列的和,而不使用打印该特定列的命令(我想保留管道中的所有输出列,只对其中一列求和!)是否要一步一步地连续求和一列 is必须是如何使用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
还是可以使用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
显示示例,几行输入和所需输出。