特定の列の値に基づいて合計を印刷します。

特定の列の値に基づいて合計を印刷します。

ファイルがあります。

Name ID Savings
RK   1  10000
RS   2  10900
RK   1  1380
RS   2  10200

二人(RKとRS)の総貯蓄額を求めたいです。だから私が望む予想結果は次のとおりです。

RK 1 11380  (i.e 10000 + 1380)
RS 2 21100  (i.e 10900 + 10200)

ベストアンサー1

$ awk 'NR > 1 { s[$2] += $3; n[$2] = $1 } END { for (i in s) { print n[i], i, s[i] }}' file
RS 2 21100
RK 1 11380

私たちは2つの配列を使用します。 1つは合計()を保存しs、もう1つは名前(n)を保存します。配列の索引付けはIDを使用して行われます(同じ名前の人が複数人いる可能性があるため、それをインデックスとして使用しません)。

入力の各行(ヘッダー行を除く)ごとに合計を更新し、名前を保存します。最後に保存された情報を確認して印刷してみましょう。

おすすめ記事