Replace percent-escaped characters in string (%20, %5B, …) with bash
13,139
Solution 1
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]
Solution 2
Finally, thanks to #bash IRC channel, I found a "not so bad" solution :
echo `echo string%20with%5Bsome%23 | sed 's/%/\\\x/g'`
Author by
Dorian
If you are looking a my profile, why not checkout my website and contact me?
Updated on June 25, 2022Comments
-
Dorian over 1 year
I have strings containing percent-escaped characters like
%20
and%5B
, and I would like to transform it to "normal" characters like\
for%20
and[
for%5B
.How can I do that?