次のログファイルがあります。 .. このファイルが2 行の間にsome_error_message
("" で示されている場合)、リモートのsome_error_message
ftp/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/p
in コマンドは、sed
2 つの正規表現に一致する行で始まり、終了するブロック間の行だけを印刷します。また、デフォルトでは、行を印刷しないようにパラメータをsed
渡す必要があります。-n
だから:
$ sed -n '/^##$/,/^##$/p' mylogfile.txt |
grep -iq '^some_error_message$'