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.