Converta com segurança cadeias unicode em caracteres imprimíveis

2

Tenho muitos arquivos HTML contendo sequências de caracteres unicode misturadas, como 33 , e caracteres imprimíveis, como %s . O que eu gostaria de fazer é converter as strings unicode em caracteres imprimíveis de maneira segura.

Descobri que o printf do GNU coreutils os converte automaticamente, mas também aprendi da maneira mais difícil há algum tempo que printf não é confiável se você não sabe o que será impresso:

$ env printf "$(cat filename.htm)"
printf: %20M: invalid conversion specification

Eu também sei que o bash pode fazer conversões assim, mas eu teria que percorrer o arquivo com um regex, o que não é nada seguro:

$ echo $'33'
ã

Existe uma ferramenta de linha de comando que pode processar esses arquivos de maneira limpa e segura?

    
por Teresa e Junior 14.04.2013 / 05:05

1 resposta

2

Se os arquivos não tiverem outras barras invertidas:

$ printf %b\n 'aa33'
aaã

Se o fizerem, você pode dobrar as barras invertidas que não são seguidas por números inteiros:

$ printf %b\n "$(sed -E 's/\/\\/g;s/\(\[0-7])//g' <<< '\a\na33')"
\a\naã
    
por 14.04.2013 / 12:45