2017-04-09 58 views
1

如何從下面的數據中獲得區域方面的銷售和成本總計?使用awk對兩列進行分組和求和

Region Sales Cost 
North 139 35 
South 786 295 
South 312 117 
East 288 108 
North 149 56 
West 508 127 
North 145 54 
South 379 142 
East 500 188 

例如,

 
North 433 145 
and so on 
+0

你爲自己做了什麼? – Inian

+0

我曾與一個關聯數組例如。 {a [$ 1] + = $ 2,然後在END語句中輸出數組。它給出了第2列的總和。不知道如何對兩列同時進行。 – user1955215

回答

3

簡單!,只需使用兩個數組。

awk 'NR>1{uniqueSales[$1]+=$2; uniqueCost[$1]+=$3; next} 
END{for (i in uniqueSales) print i,uniqueSales[i],uniqueCost[i]}' file 

代碼工作通過跳過第一記錄NR>1,其中NR是每行Awk正在處理的行號的一個特殊的變量保持跟蹤。然後我們創建散列映射,索引是$1和兩個不同的陣列uniqueSales[$1]+=$2; uniqueCost[$1]+=$3,其分別遞增來自$2$3的值。

一旦處理完所有行。 END子句打印來自兩個數組的值以獲取所需的輸出。

South 1477 554 
East 788 296 
North 433 145 
West 508 127 
+1

感謝解決方案和解釋! – user1955215

相關問題