如何使用 bash 脚本对两个 csv 文件中每一行的列值求和?

如何使用 bash 脚本对两个 csv 文件中每一行的列值求和?

我有两个 CSV 文件,我需要计算每一行 File1 和 File2 中第 8 列的总和。这两个 CSV 文件各有 24 行,为了简化内容,我使用以下方法提取了每个 CSV 文件的第 8 行:

awk -F, '{ print $8 }' >> FILE1
awk -F, '{ print $8 }' >> FILE2

现在,我有以下格式的 2 个文件数据:

文件1

1
2
3
4

文件2

2
3
4
5

我怎样才能以这样的方式进行计算

File1.Col1 + File2.Col1 = File3.Col1
File1.Col2 + File2.Col2 = File3.Col2
File1.Col3 + File2.Col3 = File3.Col3
.
.
.

导致:

文件3

3
5
7
9

等等使用 Bash Shell 脚本,因为我的其余处理都是以相同的方式完成的。

答案1

paste File1 File2 | awk '{ print $1 + $2; }' > File3

答案2

为了避免中间文件,请使用:

paste <( awk -F, '{ print $8 }' original_file1 ) <( awk -F, '{ print $8 }' original_file2 ) | awk '{print $1+$2}' > file3

答案3

如果两个字段都在 24 个字段中的第 8 列

 paste originalfile1 originalfile2 | awk '{print $8+$32 ; }' > file3 

答案4

使用numsumpaste

paste -d ' ' File[12] | numsum -r > File3

或者如果数据文件1数据文件2是多列文件文件1文件2被提取:

paste -d ' ' <(cut -f 8 DataFile1) <(cut -f 8 DataFile2) | numsum -r > File3

相关内容