script para analisar inteiro e convertê-lo em código char

1

Eu preciso analisar a string contendo o valor do código hash e converter o código hash na representação char equivalente. Aqui está o código de exemplo dele.

I see that you#39;re eligible to get ticket for show on your device#44;

agora, o script deve sair para

I see that you're eligible to get ticket for show on your device,
    
por pratikch 21.01.2015 / 22:10

2 respostas

1

perl é bom para isso:

$ str='I see that you#146;re eligible to get ticket for show on your device#44;'
$ perl -pe 's/#(\d+);/chr($1)/ge' <<<"$str"
I see that you’re eligible to get ticket for show on your device,

Eu tive que definir a codificação do meu terminal para o WINDOWS-1252 para obter essa saída. O valor decimal 146 não é válido ISO-8859-1 personagem.

Para tratar esses códigos como entidades HTML, adicionaremos o "e" comercial ausente e decodificaremos:

perl -MHTML::Entities -lne 's/(#\d+;)/&$1/g; print decode_entities($_)' <<<"$str"
    
por 21.01.2015 / 22:34
0

No bash você poderia fazer:

$ str='I see that you#39;re eligible to get ticket for show on your device#44;'
$ re='#([0-9]*);'; while [[ $str =~ $re ]]; do b="${BASH_REMATCH[1]}"; c=$(printf "$(printf '\U%x' "$b")"); str=${str//#$b;/$c}; done; echo "$a"
I see that you're eligible to get ticket for show on your device,
    
por 25.08.2018 / 22:27