次の表データがあります
abc 1 1 1
bcd 2 2 4
bcd 12 23 3
cde 3 5 5
cde 3 4 5
cde 14 2 25
最初の列の変数に基づいて各列の値の合計を計算したいのですが、必要な結果は次のとおりです。
abc 1 1 1
bcd 14 25 7
cde 20 11 35
私はこのようにawkコマンドを使用します
awk -F"\t" '{for(n=2;n<=NF; ++n)a[$1]+=$n}END{for(i in a ) print i, a[i] }' tablefilepath
私が得た結果は次のとおりです。
abc 3
bcd 46
cde 66
私のコードの終わりが間違っているようですが、修正方法がわかりません。コードを修正するにはいくつかの指示が必要です。
ベストアンサー1
あなたはかなり近いです。何が間違っているのか知っていますか? 3つを維持する必要がありましたが、各列1の値に対して1つの合計を維持しました。
これは次のようになります。イニアンの答えただし、必要な数の列を処理するように簡単に拡張できます。
awk -F"\t" '{for(n=2;n<=NF; ++n) a[$1][n]+=$n}
END {for(i in a) {
printf "%s", i
for (n=2; n<=4; ++n) printf "\t%s", a[i][n]
printf "\n"
}
}'
Inianの答えのような3つの配列ではなく、1つの2D配列を保持します。