デジタルテーブルが多いです。以下は単なる例です。
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 番目の印刷物から次の印刷物まで使用される区切り記号。