2010-12-15 10 views
1

マイファイル、このようなものです:awkを使って最後のパターン範囲をプリントアウトする方法は?

/パターン/
2試合目
/終了を開始/
/終了パターン/

他のテキスト

パターン/
最初の試合を始めますパターン/

その他

/開始パターン/
これは私が
/終了 パターンをプリントアウトしたい 1/
他のテキスト

私は最後の試合awkを使用して印刷することができますどのように

?私はちょうどこれらのすべてのマッチを印刷する方法について知っています。

答えて

1
awk 'END { print r } 
/end pattern/ { f = x } 
/begin pattern/ { f = 1; r = x } 
f++ > 1 { r = r ? r RS $0 : $0 } 
' infile 
1

ストア現在のマッチし、それをプリントアウトするためにENDブロックを使用:/パターン/と/終了パターンを開始/間のみ1行がある場合

awk '/end pattern/{flag=0} flag{m=$0} /begin pattern/{flag =1} END{print m}' file 

これは動作します。

関連する問題