2010-01-07 3 views
6

Comment puis-je extraire des morceaux 12 octets d'un fichier binaire à certaines positions dans le fichier.comment extraire des octets spécifiques à partir d'un fichier en utilisant unix

Si je voulais extraire les 12 premiers octets que je pouvais faire quelque chose comme

head -c12 file.bin>output 

Si je voulais extraire 12 octets de byte61 que je pouvais faire quelque chose comme

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

Est-il plus simple ainsi, si j'ai quelque chose comme 20 morceaux de 12byte je dois extraire

grâce

Répondre

15

utilisation dd:

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

Vous pouvez écrire une boucle shell pour remplacer les numéros.

Vous pouvez également utiliser awk, Perl ou Python, s'il y en a beaucoup à faire ou si cela doit être très rapide.

+11

sur Linux avec coreutils 8.13 il est ** ** au lieu de sauter ** iSeek * *: 'dd bs = 1 skip = 60 count = 12 if = fichier.bin de = output' –

+0

+1 Great =) Les choses sont si simples sous Unix & Linux – Viet

1

Utiliser xxd:

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

3d signifie 61 en hexadécimal

En utilisant hexdump:

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