如何将一个数组从一个文件乘以另一个文件中的列和总和?

时间:2014-08-02 15:35:40

标签: bash awk

我有一个n种(s1到sn)的数组,它们作为列存储在file1中。另一方面,我有一个n列的文件2,长度为m。我需要将file1中每个值的值相乘以将file2的每一列相乘,然后对每一行求和并添加到file2的最后一列中。举个例子:

文件1:

s1 1
s2 2
s3 3
s4 4

和file2:

s1 s2 s3 s4
10 20 30 40
11 21 31 41
12 22 32 42
13 23 33 43

,结果应为:

s1 s2 s3 s4 sum
10 20 30 40 10*1+20*2+30*3+40*4 
11 21 31 41 11*1+21*2+31*3+41*4
12 22 32 42 12*1+22*2+32*3+42*4
13 23 33 43 13*1+23*2+33*3+43*4

我怎么能用awk做到这一点?

1 个答案:

答案 0 :(得分:0)

听起来你需要这样的东西:

awk 'NR==FNR{a[NR]=$2; next} FNR>1{sum=0; for (i=1;i<=NF;i++) sum += a[i] * $i; print sum}' file1 file2

但没有一些实际的样本输入和预期输出,很难说。