web-dev-qa-db-fra.com

Comment imprimer uniquement les valeurs hexadécimales de hexdump sans numéros de ligne ou table ASCII?

Convertir décimal en hexadécimal dans le script Shell UNIX

J'essaie d'imprimer uniquement le hex values de hexdump, c'est-à-dire ne pas imprimer les numéros de lignes et le tableau ASCII.

Mais la ligne de commande suivante n'imprime rien:

hexdump -n 50 -Cs 10 file.bin |  awk '{for(i=NF-17; i>2; --i) print $i}'
21
0x90

Vous pouvez spécifier le format exact que vous souhaitez que hexdump utilise pour la sortie, mais c'est un peu délicat. Voici la sortie par défaut, moins les décalages de fichier:

hexdump -e '16/1 "%02x " "\n"' file.bin

(Pour moi, il semble que cela produirait un espace de fin supplémentaire à la fin de chaque ligne, mais pour une raison quelconque, ce n'est pas le cas.)

37
chepner

L'utilisation de xxd est préférable pour ce travail:

xxd -p -l 50 -seek 10 file.bin

De man xxd :

xxd - make a hexdump or do the reverse.

    -p | -ps | -postscript | -plain
        output in postscript continuous hexdump style. Also known as plain hexdump style.

    -l len | -len len
        stop after writing <len> octets.

    -seek offset
        When used after -r: revert with <offset> added to file positions found in hexdump.
51
0x90

Vous pouvez également utiliser xxd -p file.bin.

19
twalberg

Tout d'abord, supprimez -C qui émet les informations ascii.

Ensuite, vous pouvez supprimer le décalage avec

hexdump -n 50 -s 10 file.bin | cut -c 9-
4
glenn jackman