このようなデータを含むログファイルがあります。
criteria (NO-NO) data/speed/profile_1
someting something useless data
something something useless data
more useless data
Old run: exit speed=22.5
Old run: ramp speed=15.2
New run: exit speed=28.2
New run: ramp speed=19.3
criteria (NO-NO) data/speed/profile 3
someting something useless data
something something useless data
more useless data
Old run: exit speed=25.3
Old run: ramp speed=18.6
New run: exit speed=29.5
New run: ramp speed=17.9
これが私が望む結果です:
criteria (NO-NO) data/speed/profile_1
Old run: exit speed=22.5
Old run: ramp speed=15.2
New run: exit speed=28.2
New run: ramp speed=19.3
criteria (NO-NO) data/speed/profile 3
Old run: exit speed=25.3
Old run: ramp speed=18.6
New run: exit speed=29.5
New run: ramp speed=17.9
私はawk 'NR==1||c-->0;/^$/{c=1}' logs.txt
各段落の最初の行を取得し、「Ref」という単語の前の内容をすべて削除しましたが、タブsed 's/^.*\(Ref\)/\1/' logs.txt
文字のみを削除しました。希望の出力を得るためにすべてを組み合わせる方法がわかりません。
ベストアンサー1
次の状態保存操作を実行できます。
/first-pattern/ {print; p = 0} /second-pattern/ {p = 1} p
前任者。
$ awk '/^criteria/ {print; p = 0} /(Old|New) run:/ {p = 1} p' file.log
criteria (NO-NO) data/speed/profile_1
Old run: exit speed=22.5
Old run: ramp speed=15.2
New run: exit speed=28.2
New run: ramp speed=19.3
criteria (NO-NO) data/speed/profile 3
Old run: exit speed=25.3
Old run: ramp speed=18.6
New run: exit speed=29.5
New run: ramp speed=17.9