GNU/Linux >> Znalost Linux >  >> Linux

Jak extrahuji jeden kus bajtů ze souboru?

Toto je stará otázka, ale rád bych přidal další verzi dd příkaz, který je vhodnější pro velké bloky bajtů:

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

kde $offset a $bytes jsou čísla v bytových jednotkách.

Rozdíl oproti Thomasově akceptované odpovědi je, že bs=1 se zde neobjevuje. bs=1 nastaví velikost vstupního a výstupního bloku na 1 bajt, což zpomalí, když je počet bajtů k extrahování velký.

To znamená, že ponecháme velikost bloku (bs ) ve výchozím nastavení 512 bajtů. Pomocí iflag=skip_bytes,count_bytes , řekneme dd pro zpracování hodnot po skip a count jako množství bajtů místo množství bloku.


head -c + tail -c

Nejste si jisti, jak je to ve srovnání s dd v účinnosti, ale je to zábavné:

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

vybere 3 bajty, počínaje druhým:

234

Viz také:

  • Jak získat libovolný kus ze souboru v systému Unix/Linux
  • Příručka pro hlavu
  • Manuál pro ocas

Zkuste dd :

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

Možnost bs=1 nastaví velikost bloku, takže dd číst a zapisovat po jednom bajtu. Výchozí velikost bloku je 512 bajtů.

Hodnota bs také ovlivňuje chování skip a count od čísel v skip a count jsou počty bloků že dd bude přeskakovat a číst/zapisovat.


Linux
  1. Jak vykopat soubor z Awk?

  2. Jak extrahovat nebo rozbalit soubor tar.xz v Linuxu

  3. Jak se install -c liší od cp

  1. Jak extrahovat titulky z filmů MP4 a MKV

  2. extrahujte jeden soubor z velkého souboru tgz

  3. Jak extrahovat soubor .dmg v Linuxu?

  1. Jak extrahovat jeden atribut ze souboru XML?

  2. Jak vytvořit soubor v Linuxu z okna terminálu?

  3. Jak RSYNC jeden soubor?