如何一次在jq中设置多个路径值?

时间:2018-03-27 13:23:38

标签: json path edit reduce jq

我已经想出了如何使用cat package.json | jq 'setpath(["dependencies", "acme-a"]; "mytagname")' 在我的JSON文件package.json中设置一个值。我可以使用模式吗?

cat package.json | jq 'setpath(["dependencies", "acme-*"]; "mytagname")'

我想要做的是使用如下的模式,所以它也设置路径“acme-b”,“acme-c”,等等:

{{1}}

jq是否支持,如果支持,它是如何完成的?

1 个答案:

答案 0 :(得分:2)

.dependencies |= with_entries(
  if .key|test("^acme-") then .value = "mytagname" else . end )

也可以使用' startswith'。使用' walk'可能是合适的。

要使用' setpath',可以使用' reduce' (例如,使用'路径'),例如:

reduce paths as $p (.;
  if $p[-1] | test("^acme-") then setpath($p; "mytagname") else . end)