簡體   English   中英

如何從文本文件中提取前幾行的指定行?

[英]How to extract specified lines from text file with a couple of lines before?

我有一些大型服務器日志文件,其中記錄了我感興趣的錯誤,如下所示:

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)

就像我提到的那樣,這些都是非常大的文件,並且其中包含很多NullpointerException,它們是由各種原因引起的。

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

Windows中是否有工具可以做到這一點? 如果不是bash腳本,那就也不錯。

使用bash腳本:

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

代替*放置那些日志文件的路徑。

一個Windows的解決方案:它使用從findrepl.bat叫幫手批處理文件- http://www.dostips.com/forum/viewtopic.php?f=3&t=4697

findrepl "at com.el.servlet.Helper.checkJData\(Helper.java:1205\)" /o:-2:+0 <file.log

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM