偶数行に対してのみ、他のファイルからファイルの特定の列を減算します。

偶数行に対してのみ、他のファイルからファイルの特定の列を減算します。


繰り返し一般的な構造を持つ2つの長いファイル、File1:
AA 100
BB 10
File2があります。
AA 100
BB 1

File1のFile2偶数行から列2を引いて、他の情報はそのまま維持/印刷したいと思います。
希望の出力:
AA 100
BB 9

そのために、私は次のように書きましたawk
awk '{a=$2;getline<f;$2-=a}!(NR % 2)' f=File1 File2

結果は次のとおりです。
BB 9
減算をうまく実行し、結果を印刷しますが、他のデータを追加するのに問題があります。

減算中に他のデータをどのように印刷できますか?

ベストアンサー1

$ paste file1 file2 | awk '{print $1, $2 - (NR%2 ? 0 : $4)}'
AA 100
BB 9

またはawk専用のソリューションが必要な場合:

$ awk 'NR==FNR{if (!(NR%2)) a[NR]=$2; next} {$2 -= a[FNR]} 1' file2 file1
AA 100
BB 9

getlineこの目的のために使用を検討している場合はお読みください。http://awk.freeshell.org/AllAboutGetlineだからあなたはこれを行うときの問題を理解します。

おすすめ記事