it-swarm.com.de

Wie erstelle ich einen hexadezimalen Speicherauszug einer Datei, die nur die hexadezimalen Zeichen ohne Leerzeichen in der Bash enthält?

Wie erstelle ich ein nverändertes Hex-Dump einer Binärdatei unter Linux mit bash? Die Befehle od und hexdump fügen beide Leerzeichen in den Dump ein. Dies ist nicht ideal.

Gibt es eine Möglichkeit, einfach eine lange Zeichenfolge mit allen Hex-Zeichen, Minuszeichen oder Zeilenumbrüchen in der Ausgabe zu schreiben?

171
David Raswik

xxd -p file

Oder wenn Sie alles in einer einzigen Zeile wollen:

xxd -p file | tr -d '\n'

234
mark4o

Format-Strings können dazu führen, dass sich hexdump genau so verhält, wie Sie es möchten (kein Leerzeichen, byteweise):

hexdump -ve '1/1 "%.2x"'

1/1 bedeutet "Jedes Format wird einmal angewendet und benötigt ein Byte" und "%.2x" ist die tatsächliche Formatzeichenfolge, wie in printf. In diesem Fall: 2-stellige Hexadezimalzahl, führende Nullen, falls kürzer.

84
Michał Trybus

Es scheint von den Details der Version von od abzuhängen. Verwenden Sie unter OSX Folgendes:

od -t x1 -An file |tr -d '\n '

(Der Ausdruck erfolgt in hexadezimalen Bytes ohne Adresse. Leerzeichen werden danach natürlich gelöscht.)

22
Donal Fellows

Perl Einzeiler:

Perl -e 'local $/; print unpack "H*", <>' file
9

Die anderen Antworten sind vorzuziehen, aber für eine reine Bash-Lösung habe ich das Skript in meine Antwort hier geändert, um einen kontinuierlichen Strom von Hex-Zeichen ausgeben zu können, die den Inhalt einer Datei darstellen. (Normalerweise wird hexdump -C Emuliert.)

2