awk - AWK 中的 URL 解码

标签 awk urldecode

这个问题在这里已经有了答案:





Using awk printf to urldecode text

(5 个回答)


8年前关闭。




我的文件中的一列是 url 编码的,我必须解码该列并需要根据列内的值执行一些操作。有什么办法可以在 awk 中解码该列吗?

最佳答案

您必须根据您的文件格式对其进行调整,但基本原理在这里(使用 GNU Awk 3.1.7 测试):

sh$ echo 'Hello%2C%20world%20%21' | awk '
     {
         for (i = 0x20; i < 0x40; ++i) {
             repl = sprintf("%c", i);
             if ((repl == "&") || (repl == "\\"))
                 repl = "\\" repl;
             gsub(sprintf("%%%02X", i), repl);
             gsub(sprintf("%%%02x", i), repl);
         }
         print
     }
 '
Hello, world !

如果您有 gawk ,您可以将其包装在一个函数中(归功于 brendanh in a comment below ):
function urlDecode(url) {
    for (i = 0x20; i < 0x40; ++i) {
        repl = sprintf("%c", i);
        if ((repl == "&") || (repl == "\\")) {
            repl = "\\" repl;
        }
        url = gensub(sprintf("%%%02X", i), repl, "g", url);
        url = gensub(sprintf("%%%02x", i), repl, "g", url);
    }
    return url;
}

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

相关文章:

linux - 搜索以特定模式结尾的列,然后删除该列

linux - 交换文件的列 - Linux(确切位置,不是单词)

php - 带有 PHP 代码的 Bash 脚本

bash - 如何在 shell 中解码 URL 编码的字符串?

java - 是否有一个通用的 Java 库可以处理一组字符串的 URL 编码/解码?

java - Spring boot @PathVariable 不能包含斜杠/分号/百分号字符

encryption - 指定的 key 不是此加密的有效 key : Key size is not valid. 获取的 key 长度为:15

linux - 有条件地删除 shell 脚本中的新行

Bash,从字符串中用点字符剪切单词

python - 按第一列定义的间隔有效地平均第二列