как извлечь определенные байты из файла с помощью unix
Как извлечь 12-байтовые куски из двоичного файла в определенных позициях внутри файла.
Если бы я хотел извлечь первые 12 байтов, я мог бы сделать что-то вроде
head -c12 file.bin>output
Если бы я хотел извлечь 12 байт из byte61, я мог бы сделать что-то вроде
head -c72 file.bin|tail -c12 >output
есть ли более простой способ, если у меня есть что-то вроде 20 12-байтовых кусков, которые мне нужно извлечь
спасибо
2 ответов
использовать dd
:
dd bs=1 seek=60 count=12 if=file.bin of=output
вы можете написать цикл оболочки для замены чисел.
вы также можете рассмотреть возможность использования awk
, Perl или Python, если их много, или это должно быть очень быстро.
использование 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