LINUX.ORG.RU

Преобразование строки в URL (замена опасных символов)

 ,


0

1

В bash-скрипте генерирую URL содержащий кавычки, пробелы, кириллицу... это вот всё. Но в дальнейшем неудобно с этой сложноформатированной строкой работать.

Есть

https://yandex.ru/search/?lr=2&text=" абв АБВ
Надо
https://yandex.ru/search/?lr=2&text=%22%20%D0%B0%D0%B1%D0%B2%20%D0%90%D0%91%D0%92

По каким ключевым словам это гуглится? Мне нужна полная таблица соответствия символов, а лучше кусок bash-скрипта выполняющий замену.

url encoding.

Про кириллицу поищи.

anonymous
()
echo '{">Говядина<"}' | sed 's:%:%25:g' | sed 's:\":%22:g' | sed 's: :%20:g' | sed 's:<:%3C:g' | sed 's:>:%3E:g' | sed 's:#:%23:g' | sed 's:{:%7B:g' | sed 's:}:%7D:g' | sed 's:|:%7C:g' | sed 's:\\:%5C:g' | sed 's:\^:%5E:g' | sed 's:~:%7E:g' | sed 's:\[:%5B:g' | sed 's:\]:%5D:g' | sed 's:`:%60:g' | sed 's:;:%3B:g' | sed 's:/:%2F:g' | sed 's:?:%3F:g' | sed 's:@:%40:g' | sed 's:=:%3D:g' | sed 's:&:%26:g' | sed 's:\$:%24:g' | sed 's:\!:%21:g' | sed 's:\*:%2A:g' | sed 's:Ѐ:%d0%80:g' | sed 's:Ё:%d0%81:g' | sed 's:Ђ:%d0%82:g' | sed 's:Ѓ:%d0%83:g' | sed 's:Є:%d0%84:g' | sed 's:Ѕ:%d0%85:g' | sed 's:І:%d0%86:g' | sed 's:Ї:%d0%87:g' | sed 's:Ј:%d0%88:g' | sed 's:Љ:%d0%89:g' | sed 's:Њ:%d0%8a:g' | sed 's:Ћ:%d0%8b:g' | sed 's:Ќ:%d0%8c:g' | sed 's:Ѝ:%d0%8d:g' | sed 's:Ў:%d0%8e:g' | sed 's:Џ:%d0%8f:g' | sed 's:А:%d0%90:g' | sed 's:Б:%d0%91:g' | sed 's:В:%d0%92:g' | sed 's:Г:%d0%93:g' | sed 's:Д:%d0%94:g' | sed 's:Е:%d0%95:g' | sed 's:Ж:%d0%96:g' | sed 's:З:%d0%97:g' | sed 's:И:%d0%98:g' | sed 's:Й:%d0%99:g' | sed 's:К:%d0%9a:g' | sed 's:Л:%d0%9b:g' | sed 's:М:%d0%9c:g' | sed 's:Н:%d0%9d:g' | sed 's:О:%d0%9e:g' | sed 's:П:%d0%9f:g' | sed 's:Р:%d0%a0:g' | sed 's:С:%d0%a1:g' | sed 's:Т:%d0%a2:g' | sed 's:У:%d0%a3:g' | sed 's:Ф:%d0%a4:g' | sed 's:Х:%d0%a5:g' | sed 's:Ц:%d0%a6:g' | sed 's:Ч:%d0%a7:g' | sed 's:Ш:%d0%a8:g' | sed 's:Щ:%d0%a9:g' | sed 's:Ъ:%d0%aa:g' | sed 's:Ы:%d0%ab:g' | sed 's:Ь:%d0%ac:g' | sed 's:Э:%d0%ad:g' | sed 's:Ю:%d0%ae:g' | sed 's:Я:%d0%af:g' | sed 's:а:%d0%b0:g' | sed 's:б:%d0%b1:g' | sed 's:в:%d0%b2:g' | sed 's:г:%d0%b3:g' | sed 's:д:%d0%b4:g' | sed 's:е:%d0%b5:g' | sed 's:ж:%d0%b6:g' | sed 's:з:%d0%b7:g' | sed 's:и:%d0%b8:g' | sed 's:й:%d0%b9:g' | sed 's:к:%d0%ba:g' | sed 's:л:%d0%bb:g' | sed 's:м:%d0%bc:g' | sed 's:н:%d0%bd:g' | sed 's:о:%d0%be:g' | sed 's:п:%d0%bf:g' | sed 's:р:%d1%80:g' | sed 's:с:%d1%81:g' | sed 's:т:%d1%82:g' | sed 's:у:%d1%83:g' | sed 's:ф:%d1%84:g' | sed 's:х:%d1%85:g' | sed 's:ц:%d1%86:g' | sed 's:ч:%d1%87:g' | sed 's:ш:%d1%88:g' | sed 's:щ:%d1%89:g' | sed 's:ъ:%d1%8a:g' | sed 's:ы:%d1%8b:g' | sed 's:ь:%d1%8c:g' | sed 's:э:%d1%8d:g' | sed 's:ю:%d1%8e:g' | sed 's:я:%d1%8f:g' | sed 's:ѐ:%d1%90:g' | sed 's:ё:%d1%91:g' | sed 's:ђ:%d1%92:g' | sed 's:ѓ:%d1%93:g' | sed 's:є:%d1%94:g' | sed 's:ѕ:%d1%95:g' | sed 's:і:%d1%96:g' | sed 's:ї:%d1%97:g' | sed 's:ј:%d1%98:g' | sed 's:љ:%d1%99:g' | sed 's:њ:%d1%9a:g' | sed 's:ћ:%d1%9b:g' | sed 's:ќ:%d1%9c:g' | sed 's:ѝ:%d1%9d:g' | sed 's:ў:%d1%9e:g' | sed 's:џ:%d1%9f:g' | sed 's:Ѡ:%d1%a0:g' | sed 's:ѡ:%d1%a1:g' | sed 's:Ѣ:%d1%a2:g' | sed 's:ѣ:%d1%a3:g' | sed 's:Ҋ:%d2%8a:g' | sed 's:ҋ:%d2%8b:g' | sed 's:Ҍ:%d2%8c:g' | sed 's:ҍ:%d2%8d:g' | sed 's:Ҏ:%d2%8e:g' | sed 's:ҏ:%d2%8f:g' | sed 's:Ґ:%d2%90:g' | sed 's:ґ:%d2%91:g' | sed 's:Ғ:%d2%92:g' | sed 's:ғ:%d2%93:g' | sed 's:Ҕ:%d2%94:g' | sed 's:ҕ:%d2%95:g' | sed 's:Җ:%d2%96:g' | sed 's:җ:%d2%97:g' | sed 's:Ҙ:%d2%98:g' | sed 's:ҙ:%d2%99:g' | sed 's:Қ:%d2%9a:g' | sed 's:қ:%d2%9b:g' | sed 's:Ҝ:%d2%9c:g' | sed 's:ҝ:%d2%9d:g' | sed 's:Ҟ:%d2%9e:g' | sed 's:ҟ:%d2%9f:g' | sed 's:Ҡ:%d2%a0:g' | sed 's:ҡ:%d2%a1:g' | sed 's:Ң:%d2%a2:g' | sed 's:ң:%d2%a3:g' | sed 's:Ҥ:%d2%a4:g' | sed 's:ҥ:%d2%a5:g' | sed 's:Ҧ:%d2%a6:g' | sed 's:ҧ:%d2%a7:g' | sed 's:Ҩ:%d2%a8:g' | sed 's:ҩ:%d2%a9:g' | sed 's:Ҫ:%d2%aa:g' | sed 's:ҫ:%d2%ab:g' | sed 's:Ҭ:%d2%ac:g' | sed 's:ҭ:%d2%ad:g' | sed 's:Ү:%d2%ae:g' | sed 's:ү:%d2%af:g' | sed 's:Ұ:%d2%b0:g' | sed 's:ұ:%d2%b1:g' | sed 's:Ҳ:%d2%b2:g' | sed 's:ҳ:%d2%b3:g' | sed 's:Ҵ:%d2%b4:g' | sed 's:ҵ:%d2%b5:g' | sed 's:Ҷ:%d2%b6:g' | sed 's:ҷ:%d2%b7:g' | sed 's:Ҹ:%d2%b8:g' | sed 's:ҹ:%d2%b9:g' | sed 's:Һ:%d2%ba:g' | sed 's:һ:%d2%bb:g' | sed 's:Ҽ:%d2%bc:g' | sed 's:ҽ:%d2%bd:g' | sed 's:Ҿ:%d2%be:g' | sed 's:ҿ:%d2%bf:g' | sed 's:Ӏ:%d3%80:g' | sed 's:ӏ:%d3%8f:g' | sed 's:Ӣ:%d3%a2:g' | sed 's:ӣ:%d3%a3:g' | sed 's:Ӥ:%d3%a4:g' | sed 's:ӥ:%d3%a5:g' | sed 's:Ӧ:%d3%a6:g' | sed 's:ӧ:%d3%a7:g' | sed 's:Ө:%d3%a8:g' | sed 's:ө:%d3%a9:g' | sed 's:Ӫ:%d3%aa:g' | sed 's:ӫ:%d3%ab:g' | sed 's:Ӭ:%d3%ac:g' | sed 's:ӭ:%d3%ad:g' | sed 's:Ӯ:%d3%ae:g' | sed 's:ӯ:%d3%af:g' | sed 's:Ӱ:%d3%b0:g' | sed 's:ӱ:%d3%b1:g'
anonymous
()

Кириллица

echo '{">Говядина<"}' | sed 's:А:%d0%90:g;s:Б:%d0%91:g;s:В:%d0%92:g;s:Г:%d0%93:g;s:Д:%d0%94:g;s:Е:%d0%95:g;s:Ж:%d0%96:g;s:З:%d0%97:g;s:И:%d0%98:g;s:Й:%d0%99:g;s:К:%d0%9a:g;s:Л:%d0%9b:g;s:М:%d0%9c:g;s:Н:%d0%9d:g;s:О:%d0%9e:g;s:П:%d0%9f:g;s:Р:%d0%a0:g;s:С:%d0%a1:g;s:Т:%d0%a2:g;s:У:%d0%a3:g;s:Ф:%d0%a4:g;s:Х:%d0%a5:g;s:Ц:%d0%a6:g;s:Ч:%d0%a7:g;s:Ш:%d0%a8:g;s:Щ:%d0%a9:g;s:Ъ:%d0%aa:g;s:Ы:%d0%ab:g;s:Ь:%d0%ac:g;s:Э:%d0%ad:g;s:Ю:%d0%ae:g;s:Я:%d0%af:g;s:а:%d0%b0:g;s:б:%d0%b1:g;s:в:%d0%b2:g;s:г:%d0%b3:g;s:д:%d0%b4:g;s:е:%d0%b5:g;s:ж:%d0%b6:g;s:з:%d0%b7:g;s:и:%d0%b8:g;s:й:%d0%b9:g;s:к:%d0%ba:g;s:л:%d0%bb:g;s:м:%d0%bc:g;s:н:%d0%bd:g;s:о:%d0%be:g;s:п:%d0%bf:g;s:р:%d1%80:g;s:с:%d1%81:g;s:т:%d1%82:g;s:у:%d1%83:g;s:ф:%d1%84:g;s:х:%d1%85:g;s:ц:%d1%86:g;s:ч:%d1%87:g;s:ш:%d1%88:g;s:щ:%d1%89:g;s:ъ:%d1%8a:g;s:ы:%d1%8b:g;s:ь:%d1%8c:g;s:э:%d1%8d:g;s:ю:%d1%8e:g;s:я:%d1%8f:g;s:ё:%d1%91:g;s:Ё:%d0%81:g'
anonymous
()

Тебе не нужен Bash, а нужен Python для этого дела.

$ python
Python 3.7.3 (default, Mar 26 2019, 21:43:19) 
[GCC 8.2.1 20181127] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from urllib.parse import quote
>>> quote('" абв АБВ')
'%22%20%D0%B0%D0%B1%D0%B2%20%D0%90%D0%91%D0%92'

Не слушай наркоманов, которые тут всякие непотребства на sed постят. Bash не предназначен для того, что ты им пытаешься решить.

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.