sustituir scripts script programas manejo linea leer fichero especiales ejemplos comando caracteres cadenas linux bash hex

linux - programas - scripts bash ejemplos



¿Cómo crear un volcado hexadecimal de archivo que contenga solo los caracteres hexadecimales sin espacios en bash? (5)

¿Cómo creo un volcado hexadecimal no modificado de un archivo binario en Linux usando bash? Los comandos od y hexdump insertan espacios en el volcado y esto no es ideal.

¿Hay alguna manera de simplemente escribir una cadena larga con todos los caracteres hexadecimales, menos espacios o líneas nuevas en la salida?


Las cadenas de formato pueden hacer que hexdump se comporte exactamente como lo desees (sin espacio en blanco, byte a byte):

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

1/1 significa "cada formato se aplica una vez y toma un byte", y "%.2x" es la cadena de formato real, como en printf. En este caso: número hexadecimal de 2 caracteres, ceros a la izquierda si es más corto.


Las otras respuestas son preferibles, pero para una solución Bash pura, modifiqué el guión en mi respuesta aquí para poder generar una secuencia continua de caracteres hexadecimales que representan el contenido de un archivo. (Su modo normal es emular hexdump -C .)


Parece depender de los detalles de la versión de od . En OSX, usa esto:

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

(Eso es imprimir como tipos de bytes hexadecimales, sin dirección. Y espacios en blanco eliminados después, por supuesto).


Perl one-liner:

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


xxd -p file

O si lo quieres todo en una sola línea:

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