GNU/Linux >> Linux Esercitazione >  >> Linux

Come estraggo un singolo pezzo di byte dall'interno di un file?

Questa è una vecchia domanda, ma vorrei aggiungere un'altra versione del dd comando più adatto per grossi blocchi di byte:

dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes

dove $offset e $bytes sono numeri in unità di byte.

La differenza con la risposta accettata di Thomas è che bs=1 qui non compare. bs=1 imposta la dimensione del blocco di input e output su 1 byte, il che lo rende terribilmente lento quando il numero di byte da estrarre è elevato.

Ciò significa che lasciamo la dimensione del blocco (bs ) al valore predefinito di 512 byte. Usando iflag=skip_bytes,count_bytes , diciamo dd per trattare i valori dopo skip e count come quantità di byte invece che di quantità di blocchi.


head -c + tail -c

Non sono sicuro di come si confronti con dd in termini di efficienza, ma è divertente:

printf "123456789" | tail -c+2 | head -c3

seleziona 3 byte, partendo dal secondo:

234

Vedi anche:

  • Come prendere un blocco arbitrario da un file su Unix/Linux
  • Manuale per la testa
  • Manuale per la coda

Prova dd :

dd skip=102567 count=253 if=input.binary of=output.binary bs=1

L'opzione bs=1 imposta la dimensione del blocco, rendendo dd leggere e scrivere un byte alla volta. La dimensione predefinita del blocco è di 512 byte.

Il valore di bs influisce anche sul comportamento di skip e count dai numeri in skip e count sono i numeri di blocchi quel dd salterà e leggerà/scriverà, rispettivamente.


Linux
  1. Come estrarre un singolo attributo da un file XML?

  2. Come creare un file in Linux dalla finestra del terminale?

  3. Come RSYNC un singolo file?

  4. In che modo install -c è diverso da cp

  5. in che modo cp -f è diverso da cp --remove-destination?

Come estrarre (decomprimere) il file Tar Bz2

Come estrarre (decomprimere) il file tar.xz

Come accedere alla shell o eseguire comandi esterni da Vim

Come estrarre indirizzi e-mail da file di testo in Linux

Come rimuovere (^M) caratteri da un file in Linux

Come estrarre un file RAR su Ubuntu