I have strings containing percent-escaped characters like %20 and %5B, and I would like to transform it to \"normal\" characters like \\ f
%20
%5B
\\
The builtin printf in bash has a special format specifier (i.e. %b) which converts \x** to the corresponding value:
$ str='foo%20%5B12%5D' $ printf "%b\n" "${str//%/\\x}" foo [12]