【问题标题】:jq: one jq command to update multiple values in Json filejq:一个 jq 命令来更新 Json 文件中的多个值
【发布时间】:2020-05-16 00:23:05
【问题描述】:

我有以下 json 文件,我需要使用一个 jq 命令更新所有键值。

{
"changeDetails": {
    "chgNumber": "$ASKNOW_CRQ"
},
"environmentType": "$ENV_TYPE",
"fqdn": "$FQDN.visa.com",
"products": [{
    "action": "deploy",
    "attributes": {
        "artifactDetails": {
            "url": "$ARTIFACT_URL"
        },
        "containers": "$CONTAINER_NAME"
    },
    "productName": "$PACKAGE_ID",
    "cookbookName": "visa_springboot"
}],
"tpg": "O&I"}

下面的 jq 命令有效并且只能在 json 文件中的键下面进行更新

. + {environmentType:"xz", fqdn:"abc", tpg:"mnop" }

使用下面的示例,我可以通过运行多个 jq 命令来更新所有键

contents="$(jq '.products.action = "abcde"' test.json)"
echo "${contents}" > test.json

使用下面的命令,它会为每个值更新创建多个 json 文件。

.products[].attributes.artifactDetails.url = "abc", .products[].cookbookName = "cookbook"

我只需要一个 JQ 命令来更新 Json 文件中的所有值,并且输出应该重定向到 final.json 文件。

【问题讨论】:

    标签: json pipe jq pipeline


    【解决方案1】:

    简而言之,使用“|”而不是 ','。

    例如

    .products[].attributes.artifactDetails.url = "abc"
    | .products[].cookbookName = "cookbook"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      相关资源
      最近更新 更多