次の行を含むファイルがあります。
....
pattern1 100 200 300
pattern2 300 400 400
pattern1 300 900 700
pattern1 200 500 900
...
上記の例に示すように、下にはいくつかの行がありますが、すべてではありませんpattern2
。pattern1
一致し、pattern1
次の行にoneがあることを確認しpattern2
、そうであれば定数要素を掛けて次の数値フィールドを変更します。 withを試しましたが、getline
結果の出力からawk
with行が削除されました。pattern1
awk '/pattern1/{getline; if($1==pattern2) $(NF-2)*=0.889848406214}1' infile.dat
入力ファイルで他の変更を行わずにこれを行うことができる方法に関する提案があります。
ベストアンサー1
awk '
/pattern1/ { f = 1; print; next }
f && /pattern2/ { $(NF-2) *= 0.889848406214 }
{ f = 0; print }
' <file