数値表の行と列の合計

数値表の行と列の合計

デジタルテーブルが多いです。以下は単なる例です。

A 25 27 50 
B 35 37 75 
C 75 78 80 
D 99 88 76 

さらなる処理のために各テーブルの行と列を合計しようとしているので、出力は次のようになります。

A 25 27 50 102
B 35 37 75 147
C 75 78 80 233
D 99 88 76 263
234 230 281

どうすればいいですか?私は試しましたが、awk成功しませんでした。

ベストアンサー1

通常、次のことを行う必要があります。

awk '{ sumrows=0;
    for (i=2; i<=NF; i++) {
        sumcols[i]+= $i; sumrows+= $i 
    }; print $0, sumrows+0
}
END { for (x in sumcols)
         { printf SEP sumcols[x]+0; SEP=OFS };
     print ""
}' infile

このsumcols[i]+= $i部分は、同じ列位置のフィールド値を合計しsumrows+= $iてから、print $0, sumrows各行を読み取った後に行を印刷します。

そしてENDループからスムケルス配列で、printf断線印刷に使用されます。SEPデフォルトに設定F生産するS各印刷物の間にスペースを追加するために、2 番目の印刷物から次の印刷物まで使用される区切り記号。

おすすめ記事