他の複数の列の3番目の列の合計を使用して新しいテキストファイルを作成します。

他の複数の列の3番目の列の合計を使用して新しいテキストファイルを作成します。

さまざまな形式のテキストファイルが複数あります。

x y z

x y z

x y z

z新しいファイルを作成し、各ファイルの値を合計してから、合計した値を変更したいと思います。zつまり

x y (z1+z2+z3+z4)

x y (z1+z2+z3+z4)

x y (z1+z2+z3+z4)

コマンドラインでこれを行うにはどうすればよいですか?私はawkこの目的のためにそれをどのように使用するのか、それともこれが実際に最も効率的な方法なのかを知っていますが、完全にはわかりません。

答え1

リンクされたファイルをawk2回渡すことができます。最初は()NR==FNRすべてのファイルのsum3番目の列()の値を計算し$3、2番目は既存の値を合計に置き換えます。

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

関連情報