
Estoy depurando una aplicación para un cliente y encontré la información de la base de datos que podría ser la solución. Le pido al cliente que lo extraiga pero lamentablemente el cliente me envió los datos sin procesar en hexadecimal...
Le pido al cliente que me reenvíe el texto plano de las herramientas de base de datos pero esperando su respuesta estoy buscando una solución bash.
Sé que los datos codificados son una cadena codificada en UTF-8: ¿hay alguna manera de decodificarlos con herramientas Unix?
Respuesta1
Con xxd
(generalmente enviado con vim
)
$ echo 5374c3a97068616e650a | xxd -p -r
Stéphane
Si el juego de caracteres de su configuración regional (consulte el resultado de locale charmap
) no es UTF-8 (pero puede representar todos los caracteres de la cadena codificada), agregue un archivo | iconv -f UTF-8
.
Si no puede representar a todos los caracteres, puedes intentar | iconv -f UTF-8 -t //TRANSLIT
obtener una aproximación.
Respuesta2
¿Perl cuenta?
$ echo "68656c6c6f0a" | \
perl -ne 'tr/a-fA-F0-9//cd; print pack("H*", $_)'
hello
Si no, entonces tal vez esto podría servir:
$ echo "68656c6c6f0a" | sed -Ee 's/[0-9a-fA-F]{2}/\\\\x&/g' | xargs printf
hello
Necesitamos una barra invertida literal para printf
, pero es especial para ambos xargs
y, sed
por lo tanto, debe duplicarse dos veces. ( \\\\x
-> \\x
-> \x
)