Декодирование URL Unix/Bash командной строки (без sed)

Я соскребаю сайт с завитком и разбираю, что мне нужно.

URL возвращаются с символами в кодировке Ascii, такими как

GET v2.12/...?fields={fieldname_of_type_Tab} HTTP/1.1

Как я могу преобразовать это в UTF-8 (символ) прямо из командной строки (в идеале что-то, что я могу передать | к) чтобы результат был...

GET v2.12/...?fields={fieldname_of_type_Tab} HTTP/1.1

РЕДАКТИРОВАТЬ: Есть ряд решений с sed но регулярное выражение, которое сопровождает его, довольно уродливо. Поскольку приведенный ответ с использованием Perl очень чистый, я надеюсь, что мы можем оставить этот вопрос открытым

1 ответ

Решение

Это на самом деле не utf8, а html-сущности

Попробуйте сделать это с помощью Perl:

$ echo 'http://domain.tld/?fields={fieldname_of_type_Tab&#125' |
    perl -MHTML::Entities -pe 'decode_entities($_)' 

Выход:

http://domain.tld/?fields={fieldname_of_type_Tab}
Другие вопросы по тегам