2015-04-01 70 views
2

我要輸出每N行,例如,每4行的總和:如何總結awk中的每一行?

cat file 
1 
11 
111 
1111 
2 
22 
222 
2222 
3 
33 
333 
3333 

輸出應該是:

6 #(1+2+3) 
66 #(11+22+33) 
666 #(111+222+333) 
6666 #(1111+2222+3333) 

我怎樣才能做到這一點使用awk?

+1

如果你想在awk中,爲什麼是bash的在您的標題? – 2015-04-01 21:40:16

+0

我可以使用任何語言或只是bash嗎? – xsami 2015-04-01 21:40:26

回答

2

基本上你可以使用下面的命令awk

awk -vN=4 '{s[NR%N]+=$0}END{for(i=0;i<N;i++){print s[i]}}' input.txt 

你可以選擇像N希望。

輸出:

6666 
6 
66 
666 

但是你看,輸出不通過awk數組進行遍歷時,預期排序。您可以通過-1移行號解決這個問題:

awk -vN=4 '{s[(NR-1)%N]+=$0}END{for(i=0;i<N;i++){print s[i]}}' a.txt 

輸出:

6 
66 
666 
6666