我有几个不同格式的文本文件:
x y z
x y z
x y z
我想创建一个新文件,对z
每个文件中的值进行求和,然后用求和值代替z
ie
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