GNU/Linux >> Linux の 問題 >  >> Linux

他の列の変数に基づいて列の値の合計を個別に取得するにはどうすればよいですか?

この質問にはすでに回答があります :最初の列に同じIDを持つデータの合計を計算するにはどうすればよいですか?

(4つの回答)
2年前に閉鎖されました。

以下のようなテーブルデータがあります

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の値ごとに合計1つを保持していましたが、
3つ保持する必要がありました。

これはイニアンの答えに似ていますが、
ただし、任意の数の列を処理するために簡単に拡張できます:

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"
             }
        }'

イニアンの答えのように3つの配列を保持するのではなく、
2次元の配列を保持します。


Linux
  1. Zshで変数データ型を取得する方法は?

  2. Uuencodeを機能させる方法は?

  3. バックグラウンドプロセスのプロセスIDを取得するには?

  1. フィールドの数値に基づいてファイルをソートする方法は?

  2. Bashの配列から一意の値を取得するにはどうすればよいですか?

  3. zip内のディレクトリのリストを取得するには?

  1. ディレクトリのコンテンツのMd5合計を1つの合計として取得するにはどうすればよいですか?

  2. tcpdump:grep可能な出力を取得するには?

  3. ビンと他のフォルダを移動しました!それらを取り戻す方法は?