使用awk对列求和时出现奇怪的输出

我有两个文件,a1.txt和a2.txt。

a1.txt

1 0.2

a2.txt

2 0.8

然后,我使用以下代码对两个文件的第二列求和并将结果输出到sum.txt

awk '{a[FNR]=$1; b[FNR]+=$2;} END{for (i=1; i<=FNR; i++) printf "%12.6f %12.5f \n", a[i], b[i]}' a[1-10].txt > sum.txt

但是,这将返回结果:

2.000000      0.00000

第一列按预期工作,但第二列的结果与预期的1.00000不同。

如果我使用a [1-2] .txt> sum.txt,则可获得正确的结果

是什么导致此问题以及如何解决?

评论
  • 淡淡的思绪
    淡淡的思绪 回复

    您可以尝试以下吗?您也应该将主块中的值求和,而不要放在END块中。

    awk '
    FNR==NR{
      sum[FNR]=$2
      next
    }
    {
      print $1,sum[FNR]+$2
    }
    ' a1.txt a2.txt
    

    同样为您的答案,您的代码在数组名称中有错字