我的字符串包含转化率为百分比的字符,例如%20
和%5B
,我想将其转换为\
的{{1}}等“普通”字符,%20
和{ {1}} [
。
我该怎么做?
答案 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'`