gpt4 book ai didi

regex - 在 bash 中解码 URL

转载 作者:行者123 更新时间:2023-11-29 09:38:06 24 4
gpt4 key购买 nike

我正在尝试在纯 bash 中解码 GET 参数。

即:hello+%26+world 应该变成 hello & world

到目前为止,我已经设法得到这个:

#!/usr/bin/sh
echo "Content-type: text/plain"
echo ""

CMD=`echo "$QUERY_STRING" | grep -oE "(^|[?&])cmd=[^&]+" | sed "s/%20/ /g" | cut -f 2 -d "="`
CMD="${CMD//+/ }"

echo $CMD

将所有 + 替换为空格。

有更好的方法吗?还是我只需要查找每个可能的编码特殊字符并替换它?

最佳答案

您可以使用此函数进行 URL 解码:

decodeURL() { printf "%b\n" "$(sed 's/+/ /g; s/%\([0-9a-f][0-9a-f]\)/\\x\1/g;')"; }

然后测试它:

decodeURL <<< 'hello+%26+world'
hello & world

解释:

  • printf %b - 扩展相应参数中的反斜杠转义序列
  • s/+//g - 用空格替换每个 +
  • s/%\([0-9a-f][0-9a-f]\)/\\x\1/g - 替换每个 %后跟 2 个十六进制字符的文字 \x 和相同的十六进制字符,以便 printf 可以为它打印等效的 ASCII 字符

关于regex - 在 bash 中解码 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com