48

grepを使用して、コンテキストを固定行数に設定する方法を知っています。after-contextを「次の空白行まで」に設定するなど、任意の文字列条件に基づいてコンテキストを表示することは可能ですか?

または、おそらく他のツールの組み合わせですか?

基本的に、連続した行のログファイルがあり、「イベント」を空白行で区切ります。ログファイルで文字列を検索しますが、イベント全体を表示します。

4

4 に答える 4

49

必要なようですねsed

sed -n '/pattern/,/^$/p' file

デフォルトでは印刷しません(-n)。/pattern/空の行に一致する行について/^$/は、印刷します。

于 2012-11-23T18:44:25.627 に答える
27

簡単な解決策は次のとおりです。

awk '/pattern/' RS= input-file

RS を空の文字列に設定すると、awk は空白行をレコード区切りとして扱い、単純な規則/pattern/により、awk はパターン (拡張正規表現) に一致するすべてのレコードを出力します。

于 2012-11-23T23:06:51.387 に答える