У меня есть HTML-файл с большим количеством%-кодированного текста UTF-8 в URL.
Например, «% D1% 80% D0% B5% D1% 81% D1% 83% D1% 80% D1% 81% D1% 8B» означает «ресурсы» («ресурсы» на русском языке).
Задача состоит в том, чтобы заменить все такие подстроки читаемым текстом UTF-8.
Чтобы упростить задачу, мы можем рассмотреть, что %
в файле нет другого использования знака. Буквы могут быть как прописными, так и строчными.
Я подозреваю , что это может быть сделано элегантно с sed
, perl
, awk
или что - то , но не знаю , как.
Это веб-приложение, кажется, делает трюк с текстом, который вы вставляете туда.
С perl:
Или с
URI::Escape
:источник
$_
gnu.org/software/bash/manual/html_node/Special-Parameters.html$_
вотperl
, а$_
неbash
. В сочетании с этой-p
опцией выражение perl запускается для каждой входной записи (записи, считываемые из файлов, заданных в качестве аргумента или стандартного ввода, если аргумент не указан), с текущей записью, хранящейся в$_
. Это похоже наawk
's$0
.Существует программа под названием,
convmv
которая может помочь вам.Просто используйте
convmv --unescape /some_path/target_file
. Это будет делать всухую.После подтверждения используйте,
convmv --notest --unescape /some_path/target_file
чтобы продолжить.Домашняя страница этой программы: http://j3e.de/linux/convmv/
источник