多个不同文件中的数字总和
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 AWK
的 FNR
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
中用作限制,因为所有文件的行数都相同。
我正在寻找对 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 AWK
的 FNR
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
中用作限制,因为所有文件的行数都相同。