包含[]的特定句子的Grep

时间:2011-09-26 16:46:01

标签: python bash

我有一个python脚本,用于报告在17分钟的时间段内错误在catalina.out中显示的次数。某些错误包含更多信息,显示在错误下方的下三行中。不幸的是,我正在寻找的句子包含[]。我不想使用正则表达式进行搜索。有没有办法关闭正则表达式功能,只进行精确搜索?

以下是我搜索的句子的示例:

  

bob:[2012-08-30 02:58:57.326]错误:web.errors.GrailsExceptionResolver处理请求时发生异常:[GET] / bob / event

由于

3 个答案:

答案 0 :(得分:2)

如果您正在使用bash和常规grep,则必须转义[]个字符,即\[ ... \]

grep 'bob: \[2012-08-30 02:58:57.326\] ERROR: web.errors.GrailsExceptionResolver Exception occurred when processing request: \[GET\] /bob/event' catalina.out

不确定您是否真的在询问如何搜索“17分钟时间段”和/或如何“在错误下方的下三行中显示”。

如果您显示样本输入和样本输出,它将有助于提供答案。

我希望这会有所帮助。

答案 1 :(得分:2)

(假设您使用的是标准grep命令)

  

有没有办法关闭正则表达式功能,只进行精确搜索?

当然,您可以将-F标记传递给grep,如下所示:

grep -F "[GET]" catalina.out

请记住将搜索字词放在引号中,否则bash会以特殊方式解释括号。

答案 2 :(得分:0)

你正在寻找什么?如果您需要的不仅仅是特定的精确搜索,您可能需要使用正则表达式。

无需担心括号。正则表达式仍然可以搜索它们。你只需要逃避正则表达式中的字符:

pattern = r'\[\d+-\d+-\d+ \d+:\d+:\d+\.\d+] ERROR:' # or whatever