Comment créer un dump d'un fichier contenant uniquement les caractères hex sans espaces en bash?

comment créer un non modifié dump hexadécimal d'un fichier binaire sous Linux en utilisant bash? Les commandes od et hexdump insèrent toutes deux des espaces dans le dump, ce qui n'est pas idéal.

y a-t-il un moyen d'écrire simplement une longue chaîne avec tous les caractères hexadécimaux, moins les espaces ou les lignes dans la sortie?

156

5 réponses

xxd -p file

ou si vous voulez tout sur une seule ligne:

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

213
répondu mark4o 2010-04-10 20:27:55

les chaînes de Format peuvent faire en sorte que hexdump se comporte exactement comme vous le souhaitez (aucun espace, byte byte):

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

1/1 signifie "Chaque format est appliqué une fois et prend un octet", et "%.2x" est la chaîne de format réelle, comme dans printf. Dans ce cas: numéro hexadécimal à 2 caractères, en tête des zéros si plus court.

71
répondu Michał Trybus 2017-01-27 13:52:54

il semble dépendre des détails de la version de od . Sur OSX, utilisez ceci:

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

(c'est l'impression en tant que type d'octets hexadécimaux, sans adresse. Et les espaces supprimés après, bien sûr.)

21
répondu Donal Fellows 2010-04-10 20:22:02

Perl one-liner:

perl -e 'local $/; print unpack "H*", <>' file
8
répondu Alan Haggai Alavi 2010-04-10 21:18:02

les autres réponses sont préférables, mais pour une solution de Bash pure, j'ai modifié le script dans ma réponse ici pour pouvoir produire un flux continu de caractères hexadécimaux représentant le contenu d'un fichier. (Son mode normal est d'émuler hexdump -C .)

2
répondu Dennis Williamson 2017-05-23 12:34:42