search日志文件
可能重复:
在VIM或其他地方使用正则expression式进行search
我正在寻找一个巨大的〜600 Mb文件的特定模式,这是7hex值长。 问题是
- “模式”可能在下一行,并且
- 有几条寻址线。
我摆脱了所有的回车问题摆脱了问题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式,但你得到的基本思路。
你可以使用循环缓冲区。
- 打开文件
- 阅读一行
- 阅读地址并发表
- 读取第一个值并将其放入缓冲区
- 读取下一个值,并抛出缓冲区的最后一个值(std :: list可能是好的)
- 检查缓冲区是否包含模式
- 循环5直到行尾
- 循环2直到文件的末尾