Заменить экранированные процентами символы в строке (% 20,% 5B,…) на bash - PullRequest
6 голосов
/ 22 февраля 2011

У меня есть строки, содержащие символы с экранированием в процентах, такие как %20 и %5B, и я хотел бы преобразовать их в "обычные" символы, такие как \ для %20 и [ для %5B.

Как я могу это сделать?

Ответы [ 2 ]

9 голосов
/ 22 февраля 2011

Встроенный printf в bash имеет специальный спецификатор формата (т.е.% b), который преобразует \ x ** в соответствующее значение:

$ str='foo%20%5B12%5D'
$ printf "%b\n" "${str//%/\\x}"
foo [12]
1 голос
/ 22 февраля 2011

Наконец, благодаря IRC-каналу #bash, я нашел «неплохое» решение:

echo `echo string%20with%5Bsome%23 | sed 's/%/\\\x/g'`
...