2011-09-26 58 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 
相關問題