次のようにファイルの数を合計する必要があります。
column1 column2 column3
row1 a(1,1) a(1,2) a(1,3)
row2 a(2,1) a(2,2) a(2,3)
row3 a(3,1) a(3,2) a(3,3)
row4 a(4,1) a(4,2) a(4,3)
column4 column5 column6
row1 b(1,1) b(1,2) b(1,3)
row2 b(2,1) b(2,2) b(2,3)
row3 b(3,1) b(3,2) b(3,3)
row4 b(4,1) b(4,2) b(4,3)
column7 column8 column9
row1 c(1,1) c(1,2) c(1,3)
row2 c(2,1) c(2,2) c(2,3)
row3 c(3,1) c(3,2) c(3,3)
row4 c(4,1) c(4,2) c(4,3)
次のように出力します。
column1 a(1,1)+a(2,1) a(3,1)+a(4,1)
column2 a(1,2)+a(2,2) a(3,2)+a(4,2)
column3 a(1,3)+a(2,3) a(3,3)+a(4,3)
column4 b(1,1)+b(2,1) b(3,1)+b(4,1)
column5 b(1,2)+b(2,2) b(3,2)+b(4,2)
column6 b(1,3)+b(2,3) b(3,3)+b(4,3)
column7 c(1,1)+c(2,1) c(3,1)+c(4,1)
column8 c(1,2)+c(2,2) c(3,2)+c(4,2)
column9 c(1,3)+c(2,3) c(3,3)+c(4,3)
Bashでこれを行う方法はありますが、2つの2D配列でのみ機能し、この例では3つの2D配列で失敗します。私は多くの2D配列に便利なものが欲しいです。ここのスクリプトは2つの2D配列でのみ機能します。
sed 's/row[1-6]//;/^$/d' test |
pr -2t |
awk 'NR==1{$1=$1; print; next}
!(NR%2){split($0,a); next}
{for(i=1;i<=NF;i++) $i+=a[i]}1' |
tr ' ' '\n' |
pr -3t
注:合計を計算するには、セルインデックスを次の値に置き換えます。
$ tr -d 'ab(,)' < file > filenums
答え1
私の考えの秘密は、-3t
最初の列を使用してpr
から追加-w200
(または同様のもの)して、最後の列が切り捨てられるのを防ぐことです。
pr -${N}t -w $((N*W))
より一般的にN個の行列がある場合は、最初のpr
コマンドを使用します。ここではW
、行列の文字幅です(たとえば、約10に列あたり1ポイントを加えた値)。
他のすべては大丈夫でしょう。