Replace percent-escaped characters in string ( , [, …) with bash

前端 未结 2 1085
无人及你
无人及你 2021-02-09 14:11

I have strings containing percent-escaped characters like %20 and %5B, and I would like to transform it to \"normal\" characters like \\ f

相关标签:
2条回答
  • 2021-02-09 14:45

    Finally, thanks to #bash IRC channel, I found a "not so bad" solution :

    echo `echo string%20with%5Bsome%23 | sed 's/%/\\\x/g'`
    
    0 讨论(0)
  • 2021-02-09 14:49

    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]
    
    0 讨论(0)
提交回复
热议问题