GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie extrahiere ich einen einzelnen Byteblock aus einer Datei?

Dies ist eine alte Frage, aber ich möchte eine andere Version von dd hinzufügen Befehl, der besser für große Byte-Blöcke geeignet ist:

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

wobei $offset und $bytes sind Zahlen in Byte-Einheiten.

Der Unterschied zur akzeptierten Antwort von Thomas besteht darin, dass bs=1 kommt hier nicht vor. bs=1 setzt die Ein- und Ausgabeblockgröße auf 1 Byte, was es furchtbar langsam macht, wenn die Anzahl der zu extrahierenden Bytes groß ist.

Das heißt wir belassen die Blockgröße (bs ) mit dem Standardwert von 512 Bytes. Mit iflag=skip_bytes,count_bytes , sagen wir dd um die Werte nach skip zu behandeln und count als Byte-Anzahl statt Block-Anzahl.


head -c + tail -c

Ich bin mir nicht sicher, wie es mit dd verglichen wird in Effizienz, aber es macht Spaß:

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

wählt 3 Bytes aus, beginnend mit dem 2.:

234

Siehe auch:

  • Wie man unter Unix/Linux einen beliebigen Chunk aus einer Datei holt
  • Handbuch für Kopf
  • Handbuch für Heck

Versuchen Sie es mit dd :

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

Die Option bs=1 setzt die Blockgröße und macht dd lesen und schreiben Sie jeweils ein Byte. Die Standardblockgröße beträgt 512 Bytes.

Der Wert von bs wirkt sich auch auf das Verhalten von skip aus und count seit den Zahlen in skip und count sind die Anzahl der Blöcke dass dd überspringt bzw. liest/schreibt.


Linux
  1. So extrahieren Sie die Datei filename.tar.gz

  2. Wie unterscheidet sich install -c von cp

  3. So extrahieren Sie Untertitel aus MP4- und MKV-Filmen

  4. Extrahieren Sie eine einzelne Datei aus einer riesigen TGZ-Datei

  5. Wie entpacke ich eine .dmg-Datei unter Linux?

So extrahieren (entpacken) Sie die Tar Bz2-Datei

So extrahieren (entpacken) Sie die tar.xz-Datei

Wie man von Vim aus auf die Shell zugreift oder externe Befehle ausführt

So extrahieren Sie E-Mail-Adressen aus einer Textdatei unter Linux

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So extrahieren Sie eine RAR-Datei unter Ubuntu