【问题标题】:Modify one value in array修改数组中的一个值
【发布时间】:2018-09-17 16:44:19
【问题描述】:

这与Update one value in array of dicts, using jq非常相似

我有一个 foo.json,我想将 AAA 更新为 AAA-MY-SUFFIX。 基本上,我想得到当前值(AAA),然后给它加上一个后缀。

[ { "Key": "Name", "Value": "awesome" }, { "Key": "role", "Value": "AAA" } ]

从上一个问题,我可以用这个替换 AAA 的值:

cat foo.json | jq '(.[] | select(.Key == "role") | .Value) |= "-MY_SUFFIX"'

但我想为现有值追加一个后缀,而不是完全替换它。

类似这样的东西(但它当然不起作用):

cat tags.json | jq '(.[] | select(.Key == "role") | .Value) |= .Value + "-MY_SUFFIX"'

我觉得我很接近,但我只能弄清楚:(

【问题讨论】:

    标签: arrays json edit jq


    【解决方案1】:

    确实关闭了。您可以简单地将.Value + "-MY_SUFFIX" 替换为

    . + "-MY_SUFFIX"
    

    或者更好的是,使用+=,如:... += "-MY_SUFFIX"

    就个人而言,我会使用过滤器:

    map(if .Key == "role" then .Value += "-MY_SUFFIX" else . end)
    

    (实际上,使用后缀"-MY-SUFFIX" :-)

    【讨论】:

      【解决方案2】:

      玩了这么久,我想我明白了:

      cat tags.json | jq '(.[] | select(.Key == "role") | .Value) |= (. + "- MY_SUFFIX")'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 2019-10-10
        相关资源
        最近更新 更多