希望能够使用 jq 在 JSON 文件中进行替换

希望能够使用 jq 在 JSON 文件中进行替换

我希望设计一个 JQ 函数,它允许管理 JSON 文件本身内的数据替换以及 shell 环境替换(和 shell 函数调用)。例如我有这个文件...

{
    "services" : {
        "blah" : {
            "server" : "https://my.server.home",
            "role_id" : "ABC",
            "login" : {
                "path" : "v1/auth/approle/login",
                "connection_data" : {
                    "role_id" : "{{services.blah.role_id}}",
                    "secret_id" : "${BLAH_SECRET}.${MY_DEFINED_ENVVAR}"
                },
                "other" : "$( get_workspace )/ght"
            }
        }
    },
    "applications" : {
        "curl" : {
            "version" : "7.80"
        }
    }
}

并希望得到这样的结果:

{
  "services": {
    "blah": {
      "server": "my.server.home",
      "role_id": "ABC",
      "login": {
        "path": "v1/auth/approle/login",
        "connection_data": {
          "role_id": "ABC",
          "secret_id": "my-secret.xyz"
        },
        "other": "/abc/my_workspace/ght"
      }
    }
  },
  "applications": {
    "curl": {
      "version": "7.80"
    }
  }
}

在这样做时,我希望能够控制用于描述对 JSON 文件的内部访问的标记,以便从那些用于显示应该运行 shell 函数与 shell 环境变量的标记中进行替换。

我认为正确的方法是使用 jq's方法与测试的合适函数结合使用细绳允许多次处理该行,直到它不再改变(即所有替换都已完成)。

有什么建议么???

相关内容