search日志文件

可能重复:
在VIM或其他地方使用正则expression式进行search

我正在寻找一个巨大的〜600 Mb文件的特定模式,这是7hex值长。 问题是

  1. “模式”可能在下一行,并且
  2. 有几条寻址线。

我摆脱了所有的回车问题摆脱了问题1,但我仍然面临,即使值是在下一行我不知道如何search地址线。 下面是一个例子:
0x000001A0: 36 5B 09 76 99 31 55 09 78 99 34 51 49 BF E0 03
0x000001B0: 28 0B 0A 03 0B E0 07 28 0B 0A 03 0B 49 58 09 35

例如:我想能够find模式49 BF E0 03 28 0B 0A ,它跨越了上面的第1行和第2行,但是我不能仅仅因为0x000001B0:而定期search它0x000001B0:在行的开头Anybuild议或c + +代码或Excel的想法将是有益的。 我现在正在使用VIM来打开这个大文件,使用Excel不会打开整个文件。

Python,只读一行,分割,查第一部分,将hex连接成一个string,然后search。 像这样的东西可以工作:

 hex = "" for each line in lines: tmp = line.split() // split on whitespace hex += tmp[1:] // grab everything after address if hex.contains(pattern): # do something 

或者使用正则expression式,但你得到的基本思路。

你可以使用循环缓冲区。

  1. 打开文件
  2. 阅读一行
  3. 阅读地址并发表
  4. 读取第一个值并将其放入缓冲区
  5. 读取下一个值,并抛出缓冲区的最后一个值(std :: list可能是好的)
  6. 检查缓冲区是否包含模式
  7. 循环5直到行尾
  8. 循环2直到文件的末尾