2017-03-08 56 views
0

不断地解析文本日志文件。这些通常是应用程序和http日志。这些日志文件包含无数的信息,搜索可以像干草堆中的众所周知的针一样。文本文件搜索 - 在匹配结果附近找到并处理解析行'

通常,文本编辑器如BBEdit在使用正则表达式和它的一些行提取/删除功能时很好。虽然这可以找到或提取单个项目或行,但对于提取项目行加上前几行和后几​​行非常有用的上下文无关。

请考虑以下源文本 - 显然不是日志文件!

01 Lorem ipsum sit amet, consectetur adipiscing elit. 
02 Pellentesque eu est ac neque gravida consectetur id non sem. 
00 Nullam in tortor vulputate, porttitor mauris et, tristique justo. 
03 Suspendisse ac lorem molestie, faucibus tortor sed, euismod elit. 
04 Sed auctor leo non dolor pharetra, eu faucibus felis bibendum. 
05 Integer id turpis ullamcorper magna venenatis ultrices. 
06 Mauris semper nulla et lorem dignissim sollicitudin. 
07 Curabitur fringilla turpis a justo sodales efficitur. 
08 Phasellus dictum erat et mi euismod, ut ultricies augue molestie. 
09 Quisque eget arcu ut ligula aliquam viverra vitae nec felis. 
10 Maecenas nec dolor orci ac elit eleifend elementum. 
11 Nullam ut lacus in sem fringilla suscipit. 
12 Suspendisse sollicitudin massa fermentum magna dapibus bibendum. 
13 Maecenas vestibulum libero id tortor molestie condimentum. 

可以很容易地搜索包含“悲”用文本编辑器的所有行:

04 Sed auctor leo non dolor pharetra, eu faucibus felis bibendum. 
10 Maecenas nec dolor orci ac elit eleifend elementum. 

我真正想要的是找到:

  • 目标线加之前和之后的2或3行;
  • 目标线,然后环顾四周它包含xyz线,并通过与目标线返回该行
  • 目标线然后再应用其他一些过滤器
  • 目标线,回溯到以前的一些文字,然后处理后续x线使用一些正则表达式

问题:什么是最好的程序员工具来做到这一点? AWK?蟒蛇? Grep一些其他的专家工具?特别对Mac工具感兴趣,但Windows工具可以工作。

+0

你可以用'grep'与'-C'选项前要显示的行给定数量和比赛 – imhotap

+0

后是否有更好的StackOverflow网站问这样的问题? – GlennG

回答

1

在Unix(Linux或Mac)命令行上,可以使用带有-C选项的grep在匹配前后显示给定数量的行。例如(其中test.txt就是你们的榜样文本):

$ grep -C 1 dolor test.txt 
03 Suspendisse ac lorem molestie, faucibus tortor sed, euismod elit. 
04 Sed auctor leo non dolor pharetra, eu faucibus felis bibendum. 
05 Integer id turpis ullamcorper magna venenatis ultrices. 
-- 
09 Quisque eget arcu ut ligula aliquam viverra vitae nec felis. 
10 Maecenas nec dolor orci ac elit eleifend elementum. 
11 Nullam ut lacus in sem fringilla suscipit. 
相关问题