Sto generando file di dati binari che sono semplicemente una serie di record concatenati insieme. Ogni record è costituito da un'intestazione (binaria) seguita da dati binari. All'interno dell'intestazione binaria c'è una stringa ascii lunga 80 caratteri. Da qualche parte lungo la strada, il mio processo di scrittura dei file è un po 'incasinato e sto cercando di risolvere il problema controllando quanto a lungo sia effettivamente ogni record.offset "grep" della stringa ascii da file binario
This sembra estremamente correlato, ma non capisco perl, quindi non sono stato in grado di ottenere la risposta accettata lì per funzionare. L'altra risposta punta a bgrep
che ho compilato, ma mi vuole dare da mangiare una stringa esadecimale e preferirei avere uno strumento in cui posso dargli la stringa ascii e la troverà nei dati binari, stampa la stringa e il byte offset dove è stato trovato.
In altre parole, sto cercando qualche strumento che agisce in questo modo:
tool foobar filename
o
tool foobar < filename
e la sua uscita è qualcosa di simile:
foobar:10
foobar:410
foobar:810
foobar:1210
...
per esempio la stringa che corrisponde e un offset di byte nel file in cui è iniziata la corrispondenza. In questo esempio, posso dedurre che ogni record è lungo 400 byte.
Altri vincoli:
- Capacità di ricerca per regex è cool, ma io non ne hanno bisogno per questo problema
- I miei file binari sono grandi (3,5 GB), quindi mi piacerebbe evitare di leggere l'intero file in memoria, se possibile.
argv! Non so a che punto la mia padronanza della grammatica inglese sia scivolata nel fango. Grazie per averlo corretto per me @Kevin – mgilson