繰り返し一般的な構造を持つ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だからあなたはこれを行うときの問題を理解します。
答え2
このような?
awk '{a=$2;getline<f;(NR%2)?$2:$2-=a;print}' f=File1 File2