文本文件搜索 - 查找并处理解析行' near'匹配的结果

时间:2017-03-08 17:04:13

标签: file full-text-search text-editor text-parsing

不断解析文本日志文件。这些通常是应用程序和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.

很容易搜索包含" dolor"的所有行。用文本编辑器:

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

我真正想要的是找到:

  • 目标行加上前一行和后续两行或三行;
  • 目标行,然后查看包含xyz的行并将此行返回到目标行
  • 目标行然后应用其他一些过滤器
  • 目标行,回溯到之前的某些文本,然后使用一些正则表达式处理后续的x行

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

1 个答案:

答案 0 :(得分:1)

在Unix(Linux或Mac)命令行中,您可以使用grep和-C选项在匹配前后显示给定数量的行。例如(其中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.