在linux shell上显示日志文件的特定部分

时间:2012-02-02 08:52:22

标签: linux shell logging

我正在寻找一种从日志文件中获取特定信息的方法。

这是我的日志文件:

------
[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语句的调试和错误信息。 我需要的是从这个日志文件中获取所有sql错误消息块。

这些块用'------'分隔。

与文件的第一个条目一样,错误消息由“ERR:”表示 消息块。 如何从文件中获取这些消息。 我不想为这种任务编写特殊的脚本。 如果可以通过使用命令行工具来完成它将会很好。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

awk可以为您完成:

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

将打印ERR:块。如果您希望其他人将~替换为!~

See it in action here

答案 1 :(得分:0)

您可以使用grep:

grep ERR: filename