2014-01-29 13 views
1

不知道您是否可以通過tail和grep來完成此操作。比方說,我有一個我想尾巴的日誌文件。它在調試模式下會吐出相當多的信息。我想用grep的有關只有我的模塊信息,模塊名稱是在日誌中,像這樣:尾和grep組合顯示多行模式中的文本

/*** Module Name | 2014.01.29 14:58:01 
a multi line 
dump of some stacks 
or whatever 
**/ 
/*** Some Other Module Name | 2014.01.29 14:58:01 
this should show up in the grep 
**/ 

所以,你可以想像,這將是吐出線屬於「模塊名稱數量「可能是2或50,直到結束模式出現(** /)

+0

我認爲您最好使用awk。 –

回答

2

從你的描述,好像這應該工作:

tail -f log | awk '/^\/\*\*\* Module Name/,/^\*\*\//' 

但要警惕的緩衝問題。 (打印到文件中的行很可能會在實際打印之前看到高延遲)。

0

我認爲您將不得不爲此安裝pcregrep。那麼這將工作:

tail -f logfile | pcregrep -M "^\/\*\*\* Some Other Module Name \|.*(\n|.)*?^\*\*/$" 

這個工作在測試,但由於某些原因,我不得不您的示例文本追加到了100倍以上的日誌文件輸出前開始出現。但是,在調用此行後立即寫入日誌文件的所有「其他模塊名稱」數據最終都會打印到標準輸出。

+0

「某些原因」正在緩衝。 pcregrep是塊緩衝它的輸出,並沒有打印任何東西,直到它(大約)4k打印。 –