我正在生成二進制數據文件,這些文件只是一系列連接在一起的記錄。每條記錄都包含一個(二進制)標頭,後跟二進制數據。在二進制頭中有一個ASCII字符串,長度爲80個字符。在這個過程中,我編寫文件的過程有點搞砸,我試圖通過檢查每條記錄的實際長度來調試這個問題。「grep」從二進制文件中偏移ascii字符串
This似乎非常相關,但我不明白Perl,所以我一直無法得到公認的答案在那裏工作。另一個答案指向我已經編譯的bgrep
,但它要我給它一個十六進制字符串,我寧願有一個工具,我可以給它ascii字符串,它會在二進制數據中找到它,print字符串和它發現的字節偏移量。
換句話說,我在尋找一些工具,它的作用是這樣的:
tool foobar filename
或
tool foobar < filename
,其輸出是這樣的:
foobar:10
foobar:410
foobar:810
foobar:1210
...
例如在匹配開始的文件中匹配的字符串和字節偏移量。在這個例子中,我可以推斷每條記錄的長度是400字節。
其他制約因素:
- 通過正則表達式搜索能力是很酷,但我並不需要它對於這個問題
- 我的二進制文件都是大(3.5GB),所以我想如果可能,避免將整個文件讀入內存。
argv的!我不知道我對英語語法的掌握在什麼時候陷入了泥潭。感謝您爲我修復@Kevin – mgilson