J'ai un fichier html avec beaucoup de texte UTF-8 encodé à% dans les URL.
Par exemple, "% D1% 80% D0% B5% D1% 81% D1% 83% D1% 80% D1% 81% D1% 8B" signifie "ресурсы" ("ressources" en russe).
La tâche consiste à remplacer toutes ces sous-chaînes par du texte UTF-8 lisible.
Pour simplifier la tâche, nous pouvons considérer qu'il n'y a pas d'autre %
utilisation de signe dans le fichier. Les chiffres des lettres peuvent être en majuscules et en minuscules.
Je soupçonne que cela peut être fait avec élégance sed
, perl
, awk
ou quelque chose , mais ne savent pas comment.
Cette application Web semble faire l'affaire avec le texte que vous y collez.
Avec perl:
Ou avec
URI::Escape
:la source
$_
gnu.org/software/bash/manual/html_node/Special-Parameters.html$_
voiciperl
's$_
, nonbash
' s. En combinaison avec l'-p
option, l'expression perl est exécutée pour chaque enregistrement d'entrée (enregistrements en cours de lecture à partir de fichiers donnés en argument ou stdin si aucun argument n'est fourni), l'enregistrement en cours étant stocké dans$_
. C'est similaire àawk
l »$0
.Il existe un programme appelé
convmv
qui peut vous aider.Utilisez simplement
convmv --unescape /some_path/target_file
. Il fera un essai à sec.Une fois que vous avez confirmé, utilisez
convmv --notest --unescape /some_path/target_file
pour continuer.La page d'accueil de ce programme est: http://j3e.de/linux/convmv/
la source