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?
5 réponses
xxd -p file
ou si vous voulez tout sur une seule ligne:
xxd -p file | tr -d '\n'
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.
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.)
Perl one-liner:
perl -e 'local $/; print unpack "H*", <>' file
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
.)