2種類のパターンを含む巨大なファイルがあります。モード1そしてモード2、 モード1以前も何度もこのようなことがあったかもしれません。モード2現れる。それぞれの最後の発生を把握したいと思います。モード1それぞれ前にモード2。
入力ファイル:
some text
pattern1=1
some lines
pattern1=2
some lines
pattern1=3
some lines
pattern2
some lines
pattern1=4
some lines
pattern1=5
some lines
pattern1=6
some lines
pattern1=7
some lines
pattern2
希望の出力:
pattern1=3
pattern1=7
grep
私が試した間の行数を知るときモード2そして前のことモード1:
grep -B400 "pattern2" | grep "pattern1"
ただし、2つのパターン間の行数に関係なく、すべてのファイルで実行できる一意のコマンドが必要です。
ベストアンサー1
$ awk '/pattern1/{x=$0} /pattern2/{print x}' input
pattern1=3
pattern1=7
一致(完全行)をpattern1
変数に保存しx
、pattern2
一致が発生した場合に印刷します。前に空白行があるとpattern2
空白行が印刷されpattern1
、これが望ましくないかどうかを検出するにはより多くのロジックが必要です。入力の終わりが前に来pattern1
ないすべての末尾aは削除されます。pattern2