2011-09-26 71 views
1

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

这里是一个句子即时搜索的例子:

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

感谢

+1

正则表达式有什么问题?如果你不使用正则表达式,你最终只会手工编写解析器,重新发明轮子效率低下和效率低下。 –

回答

2

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

Is there a way to turn off the regular expression function and only do an exact search?

当然,你可以通过-F标志grep,像这样:

grep -F "[GET]" catalina.out 

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

+0

手册页,你反复无常的情妇XD。是的,这是完美的。谢谢! –

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分钟时间段”和/或如何“显示在下面三行中”错误“。

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

我希望这会有所帮助。

0

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

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

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