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}'
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.)
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.
Vous pouvez également utiliser xxd -p file.bin
.
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-