Eu tenho um arquivo html com muito texto UTF-8 codificado em% em URLs.
Por exemplo, "% D1% 80% D0% B5% D1% 81% D1% 83% D1% 80% D1% 81% D1% 8B" significa "ресурсы" ("recursos" em russo).
A tarefa é substituir todas essas substrings por texto UTF-8 legível.
Para simplificar a tarefa, podemos considerar que não há outro %
uso de sinal no arquivo. Os dígitos das letras podem ser maiúsculas e minúsculas.
Eu suspeito que isso pode ser feito de forma elegante com sed
, perl
, awk
ou algo assim, mas não sei como.
Esse aplicativo da Web parece funcionar com o texto que você cola lá.
Com perl:
Ou com
URI::Escape
:fonte
$_
gnu.org/software/bash/manual/html_node/Special-Parameters.html$_
aqui éperl
's$_
, nãobash
' s. Em combinação com a-p
opção, a expressão perl é executada para cada registro de entrada (registros sendo lidos a partir de arquivos fornecidos como argumento ou stdin se nenhum argumento for fornecido), com o registro atual armazenado em$_
. Isso é semelhante aoawk
da$0
.Existe um programa chamado
convmv
que pode ajudá-lo.Basta usar
convmv --unescape /some_path/target_file
. Ele fará um teste a seco.Depois de confirmar, use
convmv --notest --unescape /some_path/target_file
para continuar.A página inicial deste programa é: http://j3e.de/linux/convmv/
fonte