多个不同文件中的数字总和

Sum numbers in multiple different files

我正在寻找对 X 列浮点数求和的最有效方法,每一列都存储在不同的文件中。

所有文件的行数完全相同(几百)。 我事先不知道人数 X.

示例X=3

文件 1:

0.5
0
...

文件 2:

0
1.5
...

文件 3:

1.1
2
...

我想生成一个文件,说 sum_files:

1.6
3.5
...

有什么有效的方法可以在 awk 或 bash 中执行此操作? (存在使用临时 python 脚本的解决方案,但我想知道如何在 awk 或 bash 中完成此操作。)

谢谢!

从每个文件中读取一行并用分隔符连接它们,这是 paste(1) 擅长的事情之一。将结果传递给 bc(1) 以获得总和:

paste -d+ file1 file2 file3 | bc -l

输出:

1.6
3.5

我将按照以下方式利用 GNU AWKFNR built-in variable 来完成此任务:

awk '{arr[FNR]+=}END{for(i=1;i<=FNR;i+=1){print arr[i]}}' file1 file2 file3

说明:对于每一行,在文件中的行数键下,根据第一个字段的值增加数组 arr 中的值。在处理完存储在 arr 中的所有文件 print 值之后。请注意,FNR 可能会在 for 中用作限制,因为所有文件的行数都相同。