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

在linux shell上显示日志文件的特定部分,linux,shell,logging,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.2

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

这是我的日志文件:

------
[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错误消息块

这些块由带“----”的线分隔

与文件的第一个条目一样,错误消息在 消息块。 如何从文件中获取这些消息。 我不想为这种任务编写特殊的脚本。 因此,如果可以使用命令行工具来实现这一点,那就太好了


感谢您的帮助。

awk
可以为您提供:

awk 'BEGIN { RS="------" ; ORS=RS}
     $0 ~ "ERR: " { print }' INPUTFILE
将打印
错误:
块。如果您想要其他的,只需将
~
替换为
~

.

您可以使用grep:

grep ERR: filename

你应该表现出你的努力。我们是来帮忙的,但不是来完成你的任务的。嘿,谢谢。这真令人印象深刻。我同意你的看法,但是我需要几行代码来完成这项工作,我想知道是否只需一个短命令就可以完成。抱歉,grep自己会打印ERR:模式出现的行。