我正在生成二进制数据文件,这些文件只是一系列串联在一起的记录。每条记录都包含一个(二进制)标头,后跟二进制数据。二进制标头中有一个 80 个字符长的 ascii 字符串。在此过程中,我编写文件的过程有点混乱,我试图通过检查每条记录的实际长度来调试这个问题。
这似乎非常相关,但我不理解 perl,所以我无法在那里得到公认的答案。我编译的另一个答案点bgrep
,但它希望我给它一个十六进制字符串,我宁愿有一个工具,我可以给它 ascii 字符串,它会在二进制数据中找到它,打印字符串和找到它的字节偏移量。
换句话说,我正在寻找一些这样的工具:
tool foobar filename
或者
tool foobar < filename
它的输出是这样的:
foobar:10
foobar:410
foobar:810
foobar:1210
...
例如,匹配的字符串和匹配开始的文件中的字节偏移量。在本例中,我可以推断出每条记录的长度为 400 字节。
其他约束:
- 通过正则表达式搜索的能力很酷,但我不需要它来解决这个问题
- 我的二进制文件很大(3.5Gb),所以我想尽可能避免将整个文件读入内存。