awkを使用して各列を合計して列名と列の合計を印刷するにはどうすればよいですか?

awkを使用して各列を合計して列名と列の合計を印刷するにはどうすればよいですか?

数値テーブルを含むファイルがあります。最初の行はヘッダー行です。 awkを使用して各列の合計を計算し、各列の合計と列名を印刷したいと思います。

どうすればいいですか?

答え1

各行に同じ数のフィールド(列)があるとします。

awk '
    NR==1   { for (i=1; i<=NF; i++) header[i]=$i; next; }
            { for (i=1; i<=NF; i++) total[i] += $i; }
    END     { for (i=1; i<=NF; i++) print header[i] "=" total[i]+0 }
    '

入力例:

red green blue
1 2 4
8 16 32
64 128 256

対応する出力:

red=73
green=146
blue=292

関連情報