2017-04-09 8 views
1

以下のデータから、Sales and CostのRegion-Wise合計を取得するにはどうすればよいですか?awkを使用して2つの列をグループ化して合計する

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

私は1つの連想配列で作業しました。 {a [$ 1] + = $ 2以降は、ENDステートメントで配列を出力します。それは2列の合計を与えます。2列同時に同時に行う方法はわかりません。 – user1955215

答えて

3

シンプル!、ちょうど2つの配列を使用しています。

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

コードはNR各行Awkの行番号の特殊変数保持トラックが処理されている最初のレコードNR>1をスキップすることによって機能します。次に、インデックスが$1ハッシュマップと、$2$3の値をそれぞれインクリメントする2つの異なる配列uniqueSales[$1]+=$2; uniqueCost[$1]+=$3を作成します。

すべての行が処理されたら。 END句は、必要な出力を得るために、両方の配列の値を出力します。

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

解決策と説明の両方に感謝します! – user1955215

関連する問題