## を含む 2 行間のエラーを一致させる正規表現

## を含む 2 行間のエラーを一致させる正規表現

次のログファイルがあります。 .. このファイルが2 行の間にsome_error_message("" で示されている場合)、リモートのsome_error_messageftp/sftp サイトでエラーが発生したと仮定します。####

some content in log file..
##
some content in log file..

some_error_message

some content in log file..
##
some content in log file..

some_error_messageそれでは、シンボルを含む行に一致する正規表現を作成したいと思います。##

以下は単なる例です。

grep -iq "^[#][#].*some_error_message.*[#][#]$"

助けてください! !

注:ログには4つの#記号のみが表示されます。もう。 1行には##、もう1行には##です。

ベストアンサー1

このようなツールはgrep一度に1行だけ一致させることができるのでgrep

sed入れ子になったブロック内の部品のみを抽出してパイピングするなどのツールを使用して、grep関心のあるエラーメッセージを見つけることができます。

/START/,/END/pin コマンドは、sed2 つの正規表現に一致する行で始まり、終了するブロック間の行だけを印刷します。また、デフォルトでは、行を印刷しないようにパラメータをsed渡す必要があります。-n

だから:

$ sed -n '/^##$/,/^##$/p' mylogfile.txt |
  grep -iq '^some_error_message$'

おすすめ記事