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