2013-08-21 23 views
0

我有大的服務器日誌文件中所記錄的錯誤,我感興趣的集合,這樣看:如何從文本文件中提取幾行前的指定行?

2013-08-14 07:49:00,490 [ajp-8009-5] ERROR com.el.filter.SiteFilter - Caught Top-Level Exception - request=http://www.site2.com/something/home.dept?page=error&buy=123&switchcurrency=EUR 
java.lang.NullPointerException 
    at com.el.servlet.Helper.checkJData(Helper.java:1205) 
    at com.el.servlet.ElServlet.doPost(ElServlet.java:113) 

(...)

2013-08-14 08:18:37,984 [ajp-8009-3] ERROR com.el.filter.SiteFilter - Caught Top-Level Exception - request=http://www.site1.com/productId=123456.html 
java.lang.NullPointerException 
    at com.el.servlet.Helper.checkJData(Helper.java:1205) 
    at com.el.servlet.ElServlet.doPost(ElServlet.java:113) 

就像我提到的那些是相當大的文件,其中有很多NullpointerExceptions,由各種東西引起。

我對感興趣從所有這些文件中提取導致NPE的網址在checkJData方法。我知道我可以通過com.el.servlet.Helper.checkJData(Helper.java:1205)'grep所有行',但是如何在這之前獲得兩行?

在Windows中有沒有一個工具可以做到這一點?如果不是bash腳本也會很好。

回答

1

使用bash腳本:

egrep -B1 "java.lang.NullPointerException" * | grep "request=" | cut -d"=" -f2- 

而是把路徑的日誌文件*。

+0

我需要什麼樣的竟是egrep的-B2 「checkJData」 * | grep「request =」|切-d「=」-f2-但你讓我到那裏,謝謝 –

相關問題