修改数组中的一个值
Modify one value in array
这与
非常相似
我有一个 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"'
我觉得我很接近,但我能弄明白:(
经过一番折腾,我想我明白了:
cat tags.json | jq '(.[] | select(.Key == "role") | .Value) |= (. + "- MY_SUFFIX")'
确实关闭。您可以简单地将 .Value + "-MY_SUFFIX"
替换为
. + "-MY_SUFFIX"
或者更好的是,使用 +=
,如:... += "-MY_SUFFIX"
就个人而言,我会使用过滤器:
map(if .Key == "role" then .Value += "-MY_SUFFIX" else . end)
(实际上,使用后缀 "-MY-SUFFIX"
更符合规定的要求 :-)
这与
我有一个 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"'
我觉得我很接近,但我能弄明白:(
经过一番折腾,我想我明白了:
cat tags.json | jq '(.[] | select(.Key == "role") | .Value) |= (. + "- MY_SUFFIX")'
确实关闭。您可以简单地将 .Value + "-MY_SUFFIX"
替换为
. + "-MY_SUFFIX"
或者更好的是,使用 +=
,如:... += "-MY_SUFFIX"
就个人而言,我会使用过滤器:
map(if .Key == "role" then .Value += "-MY_SUFFIX" else . end)
(实际上,使用后缀 "-MY-SUFFIX"
更符合规定的要求 :-)