
Estou depurando um aplicativo para um cliente e encontrei informações do banco de dados que podem ser a solução. Peço ao cliente para extraí-lo, mas infelizmente o cliente me enviou os dados brutos em hexadecimal...
Peço ao cliente que me reenvie o texto simples das ferramentas de banco de dados, mas aguardando a resposta deles estou procurando uma solução bash.
Eu sei que os dados codificados são uma string codificada em UTF-8: existe uma maneira de decodificá-los com ferramentas Unix?
Responder1
Com xxd
(geralmente enviado com vim
)
$ echo 5374c3a97068616e650a | xxd -p -r
Stéphane
Se o conjunto de caracteres da sua localidade (veja a saída de locale charmap
) não for UTF-8 (mas puder representar todos os caracteres na string codificada), adicione um | iconv -f UTF-8
.
Se não puder representar todos os caracteres, você poderá tentar | iconv -f UTF-8 -t //TRANSLIT
obter uma aproximação.
Responder2
Perl conta?
$ echo "68656c6c6f0a" | \
perl -ne 'tr/a-fA-F0-9//cd; print pack("H*", $_)'
hello
Se não, então talvez isso possa servir:
$ echo "68656c6c6f0a" | sed -Ee 's/[0-9a-fA-F]{2}/\\\\x&/g' | xargs printf
hello
Precisamos de uma barra invertida literal para printf
, mas ela é especial para ambos xargs
e, sed
portanto, precisa ser duplicada duas vezes. ( \\\\x
-> \\x
-> \x
)