Como converter um caractere hexadecimal especial de uma página html no bash? [duplicado]

2

Eu tenho um script que processa algumas informações provenientes de uma página da web. Eu acho que por causa da codificação da página, alguns caracteres especiais são codificados em hexadecimal. Por exemplo, eu tenho a string "% 2f" que deve ser traduzida para "/".

Como posso, no bash, traduzir esses caracteres especiais em hexadecimal para ASCII? Alguma idéia?

    
por Romain Pelissier 01.10.2015 / 19:01

2 respostas

5

O Bash tem um printf construído, o que pode ser o mesmo que aprendemos em C. A sintaxe um pouco difere.

printf '\x2f'

Se você não precisa se preocupar com problemas de consistência de dados de nível mais alto, basta converter um URL por esta função:

function deUrl() {
    printf "${1//%/\x}"
}

(Converte todo % para \x e imprime com printf.)

    
por 01.10.2015 / 19:10
4

Tais entidades podem ser decodificadas com este one-liner de python:

$ python -c "import urllib, sys; print urllib.unquote(sys.argv[1])"  "%2f"
/

O código não está limitado a caracteres únicos. Aceitará sequências mais complexas:

$ python -c "import urllib, sys; print urllib.unquote(sys.argv[1])"  "%2d and %2f"
- and /

O urllib.unquote do Python está documentado aqui .

    
por 01.10.2015 / 19:43

Tags