我有一个包含以下数据的文件:
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)
我需要对数组的元素求和,以显示输出
这样的输出 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)
我觉得这样做的方法是指定每个数字的位置和它们的总和,但我不知道该怎么做。
答案 0 :(得分:1)
管道的舞蹈
$ sed 's/row[0-9]//;/^$/d' filenums |
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
column1 32 72
column2 34 74
column3 36 76
column4 32 72
column5 34 74
column6 36 76
计算总和我用这个
的值替换了单元格索引$ tr -d 'ab(,)' < file > filenums
所以a(1,1)变成11等等。
答案 1 :(得分:1)
你可以创建像这样的多维数组
awk'BEGIN {i = 0} {i ++; r [i] [0]; split($ 0,r [i],“”);} END {print r [1] [1] + r [2 ] [1] #do your math here}'filename