C'est une vieille question, mais j'aimerais ajouter une autre version du dd commande qui convient mieux aux gros morceaux d'octets :
dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes
où $offset et $bytes sont des nombres en octets.
La différence avec la réponse acceptée de Thomas est que bs=1 n'apparaît pas ici. bs=1 définit la taille des blocs d'entrée et de sortie sur 1 octet, ce qui le rend terriblement lent lorsque le nombre d'octets à extraire est important.
Cela signifie que nous laissons la taille du bloc (bs ) à sa valeur par défaut de 512 octets. Utilisation de iflag=skip_bytes,count_bytes , on dit dd pour traiter les valeurs après skip et count comme quantité d'octets au lieu de quantité de blocs.
head -c + tail -c
Je ne sais pas comment cela se compare à dd en efficacité, mais c'est amusant :
printf "123456789" | tail -c+2 | head -c3
sélectionne 3 octets, en commençant par le 2 :
234
Voir aussi :
- Comment récupérer un morceau arbitraire d'un fichier sous Unix/Linux
- Manuel pour la tête
- Manuel pour la queue
Essayez dd :
dd skip=102567 count=253 if=input.binary of=output.binary bs=1
L'option bs=1 définit la taille du bloc, faisant dd lire et écrire un octet à la fois. La taille de bloc par défaut est de 512 octets.
La valeur de bs affecte également le comportement de skip et count depuis les chiffres en skip et count sont les nombres de blocs ce dd sautera et lira/écrira, respectivement.