用bash替换字符串(%20,%5B,...)中的百分比转义字符

时间:2011-02-22 18:19:28

标签: string bash utf-8 ascii

我的字符串包含转化率为百分比的字符,例如%20%5B,我想将其转换为\的{​​{1}}等“普通”字符,%20和{ {1}} [

我该怎么做?

2 个答案:

答案 0 :(得分:9)

bash中的内置printf有一个特殊的格式说明符(即%b),它将\ x **转换为相应的值:

$ str='foo%20%5B12%5D'
$ printf "%b\n" "${str//%/\\x}"
foo [12]

答案 1 :(得分:1)

最后,感谢#bash IRC频道,我发现了一个“不太糟糕”的解决方案:

echo `echo string%20with%5Bsome%23 | sed 's/%/\\\x/g'`