У меня есть строки, содержащие символы с экранированием в процентах, такие как %20 и %5B, и я хотел бы преобразовать их в "обычные" символы, такие как \ для %20 и [ для %5B.
%20
%5B
\
[
Как я могу это сделать?
Встроенный printf в bash имеет специальный спецификатор формата (т.е.% b), который преобразует \ x ** в соответствующее значение:
$ str='foo%20%5B12%5D' $ printf "%b\n" "${str//%/\\x}" foo [12]
Наконец, благодаря IRC-каналу #bash, я нашел «неплохое» решение:
echo `echo string%20with%5Bsome%23 | sed 's/%/\\\x/g'`