使用其他几个的第三列的总和创建新的文本文件

使用其他几个的第三列的总和创建新的文本文件

我有几个不同格式的文本文件:

x y z

x y z

x y z

我想创建一个新文件,对z每个文件中的值进行求和,然后用求和值代替zie

x y (z1+z2+z3+z4)

x y (z1+z2+z3+z4)

x y (z1+z2+z3+z4)

我如何从命令行执行此操作?我知道awk但不完全确定如何将其用于此目的,或者这实际上是否是最有效的方法。

答案1

您可以将串联文件传递awk两次,第一次 ( NR==FNR) 计算所有文件中sum第三列 ( $3) 的值,第二次将现有值替换为总计:

awk 'NR==FNR{sum+=$3;next}; {$3=sum; print}' <(cat file1 file2...fileN) \
<(cat file1 file2...fileN) > result.txt

相关内容