2014-01-24 43 views

回答

7

如果你想總結過,比如說,第二列,但打印一些管道中的所有列:

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

如果文件數據看起來像:

1 2 3 
4 5 6 
7 8 9 

然後輸出woul d是:

1 2 3 
4 5 6 
7 8 9 
sum= 15 
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 
0

假設相同的輸入數據@ John1024,你可以用好醇」 cutpaste和一些算術:

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

這裏的技巧是要告訴paste插入+作爲分隔符,然後使用$(())對結果表達式執行bash運算。

注意我只是爲了說明的目的輸入數據 - 它可以從另一個來源傳送,或者數據文件也直接傳遞給cut

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