如何从bash中的html页面转换特殊的十六进制字符?

Rom*_*ier 2 bash ascii hex

我有一个脚本来处理来自网页的一些信息。我猜是因为页面的编码,一些特殊字符是用十六进制编码的。例如,我有字符串“%2f”应该被翻译成“/”。

在 bash 中,我如何将这些特殊字符以十六进制形式转换为 ASCII?有任何想法吗?

pet*_*erh 5

Bash 有一个printf内置函数,它与我们在 C 中学习的大致相同。语法略有不同。

printf '\x2f'

如果你不需要担心更高级别的数据一致性问题,你可以通过这个函数简单地转换一个url:

function deUrl() {
    printf "${1//%/\\x}"
}
Run Code Online (Sandbox Code Playgroud)

(它将 every 转换%为 a \x,然后用 printf 打印它。)