Das Hauptproblem bei der Verwendung von Befehlen wie head
oder tail
ist, dass sie zeilenorientiert sind und Binärdateien nicht. Wenn sie Zeilenumbrüche enthalten, werden sie häufig nicht zur Darstellung des Zeilenendes verwendet. Wenn dies der Fall ist, sind sie möglicherweise nur Teil von Zeichenfolgen wie Programmnachrichten oder Datenfeldern.
Wenn die Daten in irgendeiner Weise strukturiert sind, müssen Sie dies bei der Auswahl der Aufteilungspunkte berücksichtigen, damit Sie keine Strukturen in der Mitte aufbrechen.
Wenn Sie die Struktur der Datei kennen, können Sie einen Befehl wie z
dd -if input-file -of output-file ...
Mit der Option, nur so viele Datenblöcke einer bestimmten Größe ab einem bestimmten (inkrementellen) Versatz in die Datei zu kopieren.
Es sieht so aus, split
als würde der von @egmont erwähnte Befehl diesen Vorgang für Sie automatisieren, aber er scheint standardmäßig zeilenorientiert zu sein, sodass Sie zusätzliche Optionen angeben müssen, um anzugeben --bytes count
, wie groß die einzelnen Teile der Datei sein sollen Sein.
Nebenbei bemerkt: Wenn Sie nicht wissen, was in einer Datei enthalten ist, aber vermuten, dass sie zumindest einige aussagekräftige Textdaten enthält, können Sie mit dem strings
Befehl einen ersten Blick darauf werfen, womit Sie es zu tun haben.
strings -n 6 file | less
findet alle Serien druckbarer Zeichen mit einer Länge von mindestens sechs Zeichen und zeigt sie in einem Pager an, damit sie auf dem Terminal nicht vorbeifliegen. Wenn Sie eine Zahl verwenden, die etwas größer als die Standardeinstellung von 4 Zeichen ist, können Sie winzige Datenschnipsel entfernen, die nur gedruckt werden können, aber in der Datei nicht auf diese Weise verwendet werden.
Wenn Sie die Datei später mit einem Binäreditor wie z. B. genauer untersuchen müssen hexedit
, haben Sie einige Orientierungspunkte, die darauf hinweisen, wo sich möglicherweise etwas Interessantes befindet.
strings
Es gibt eine Option t x
, mit der jeder gedruckten Zeichenfolge der Offset in der Datei hexadezimal vorangestellt wird (o für Oktal / d für Dezimal), damit Sie später wissen, wo Sie ihn finden. Selbst sehr kurze Dateien sind eine Menge zu bewältigen, wenn Sie sie Zeichen für Zeichen betrachten müssen.
split
Befehl an.