Как извлечь конкретные байты из файла с помощью Unix - PullRequest
7 голосов
/ 07 января 2010

как извлечь 12-байтовые куски из двоичного файла в определенных местах в файле.

Если бы я хотел извлечь первые 12 байтов, я мог бы сделать что-то вроде

head -c12 file.bin>output

Если бы я хотел извлечь 12 байтов из байта61, я мог бы сделать что-то вроде

head -c72 file.bin|tail -c12 >output

Есть ли более простой способ, если у меня есть что-то вроде 20 12-байтных кусков, которые мне нужно извлечь

спасибо

Ответы [ 2 ]

15 голосов
/ 07 января 2010

Использование dd:

dd bs=1 seek=60 count=12 if=file.bin of=output

Вы можете написать цикл оболочки для замены чисел.

Вы также можете рассмотреть возможность использования awk, Perl или Python, если их много, или это должно быть очень быстро.

1 голос
/ 23 декабря 2015

Использование xxd:

xxd -p -seek 3d -l 12 file.bin > output

3d означает 61 в шестнадцатеричном

Использование hexdump:

hexdump -ve '16/1 "%0.2x " "\n"' -s 3d -n 12 file.bin > output
...