2012-02-02 9 views
2

ログファイルから特定の情報を取得する方法を探しています。Linuxシェルのログファイルの特定のセクションを表示

これは私のログファイルです:

------ 
[SQL STATEMENT 
MAYBE 
SEVERAL 
LINES 
LONG 
] 
ERR: [01.02.2012 14:17:44] [[SOME][MORE][INFO] additional debug informations] 
[corresponding source file] 
------ 
[SQL STATEMENT 
MAYBE 
SEVERAL 
LINES 
LONG 
] 
ERR: [01.02.2012 14:21:42] [[SOME][MORE][INFO] additional debug informations] 
[corresponding source file] 
------ 
[SQL STATEMENT 
MAYBE 
SEVERAL 
LINES 
LONG 
] 
DEBUG: [23.08.2011 22:30:01] [] 
[corresponding source file] 
------ 

このログファイルには、SQL文のデバッグおよびエラー情報をcontais。 私が必要とするのは、すべてのブロックのSQLエラーメッセージをこのログファイルから取り出すことです。

これらのブロックは、 '------'の行で区切られています。

ファイルの最初のエントリと同様に、エラーメッセージは メッセージブロックの 'ERR:'で表されます。 これらのメッセージをファイルから取り出すにはどうすればよいですか。 私はその種のタスクのための特別なスクリプトを書こうとは考えていませんでした。 これは、コマンドラインツールを使用するといいでしょう。

ありがとうございました。

+1

は、さてあなたはあなたの努力を示すべきです。私たちはここにいますが、あなたの仕事を終わらせるためではありません。 –

答えて

2

awkはあなたのためにそれを行うことができます。

awk 'BEGIN { RS="------" ; ORS=RS} 
    $0 ~ "ERR: " { print }' INPUTFILE 

ERR:ブロックを出力します。他の人が望むのであれば、~から!~に置き換えてください。

See it in action here

+1

ありがとうございました。これはかなり印象的です。そして、私はあなたに同意しますが、私はこれのためにいくつかのコード行を必要としていました。 – ZSchneidi

0

あなたはグレップを使用することができます。

grep ERR: filename 
+1

申し訳ありませんが、grepは単独でERR:パターンが表示されている行を出力します。 – ZSchneidi

関連する問題