Mam plik HTML z dużą ilością zakodowanego w% tekstu UTF-8 w adresach URL.
Na przykład „% D1% 80% D0% B5% D1% 81% D1% 83% D1% 80% D1% 81% D1% 8B” oznacza „ресурсы” („zasoby” w języku rosyjskim).
Zadanie polega na zastąpieniu wszystkich takich podciągów czytelnym tekstem UTF-8.
Aby uprościć zadanie, możemy uznać, że %
w pliku nie ma innego użycia znaku. Cyfry literowe mogą być zarówno dużymi, jak i małymi literami.
Podejrzewam, że można to zrobić elegancko sed
, perl
, awk
czy coś, ale nie wiem jak.
Wygląda na to, że ta aplikacja internetowa rozwiązuje problem z wklejanym tam tekstem.
Z perlem:
Lub z
URI::Escape
:źródło
$_
dowolnie$_
tutaj toperl
jest$_
, niebash
's. W połączeniu z-p
opcją, wyrażenie perla jest uruchamiane dla każdego rekordu wejściowego (rekordy odczytywane z plików podanych jako argument lub stdin, jeśli nie podano argumentu), z bieżącym rekordem zapisanym w$_
. To jest podobne doawk
„s$0
.Istnieje program o nazwie,
convmv
który może ci pomóc.Po prostu użyj
convmv --unescape /some_path/target_file
. Zrobi to na sucho.Po potwierdzeniu użyj,
convmv --notest --unescape /some_path/target_file
aby kontynuować.Strona główna tego programu to: http://j3e.de/linux/convmv/
źródło