【发布时间】:2009-05-12 21:32:54
【问题描述】:
我有一大块相当随机的二进制数据。我想找到该块在文件中的位置、出现的次数以及偏移的字节(或扇区)。关于如何做到这一点的任何想法?
谢谢, 贾斯汀
【问题讨论】:
-
抱歉,直到现在才注意到 linux 标签。
标签: linux command-line binary
我有一大块相当随机的二进制数据。我想找到该块在文件中的位置、出现的次数以及偏移的字节(或扇区)。关于如何做到这一点的任何想法?
谢谢, 贾斯汀
【问题讨论】:
标签: linux command-line binary
我相信没有任何现有的命令完全符合您的要求。如果你的块很小并且你的文件适合内存,那么编写你自己的很容易。只需扫描文件内容,在每个位置应用 strncmp。
如果您的文件非常大但仍适合您的地址空间,您可以使用 mmap 执行相同的操作。
如果你的块不小,你最好使用Boyer-Moore algorithm 而不是strncmp。这仍然不是太多工作,因为已经有可以使用的实现。
【讨论】:
我会为此推荐X-Ways WinHex。我发现自己经常使用它来搜索硬盘驱动器或大型磁盘映像文件上的任意数据。
【讨论】:
你可以用 grep 做一些事情
这会输出带有字节偏移的行
grep --text --byte-offset 'ls' /bin/ls
添加--count 参数以获取匹配的总数。
【讨论】: