他のフィールドの変数に基づいてフィールドの値の合計を取得します。

他のフィールドの変数に基づいてフィールドの値の合計を取得します。

あるフィールドと別のフィールドの各変数値の合計を知りたいです。たとえば、次の入力では、最初の列の各値について、3番目の列の値の合計を知りたいと思います。

a x 3
b y 4
a y 2
b x 5

出力は次のようになります。

a 5
b 9

私のデータがtsvフォーマットされました。私はおそらく次のようなものが欲しいでしょう。

awk -F'\t' 'BEGIN{SUM=0}{ SUM+=$3 }END{print SUM}' 

ただし、列 1 のすべての値について。私が見つけた関連質問しかし、私は最初にawkスクリプトに触れたので、与えられたawkスクリプトを私の目的に合わせて変更することはできません。

datamashがインストールされていないため、awkとforループを持つソリューションが必要です。

ありがとう

答え1

$ 1でインデックス付きの配列を作成します。

awk -F'\t' '{ SUM[$1] += $3 } END { for (j in SUM) print j, SUM[j] }'

関連情報