gpt4 book ai didi

jq - 使用 JQ 将一个值替换为同一字典中的另一个值

转载 作者:行者123 更新时间:2023-12-04 01:45:15 33 4
gpt4 key购买 nike

给定以下 JSON 文件 foo.js(为清楚起见已删除):

{"a":{"b":[{"x":{"x1":1},"y":{"y1":5}},{"x":{"x1":1},"y":{"y1":6}}]}}

我想用 y1 的相应值替换 x1 的值。也就是说,我想结束:

{"a":{"b":[{"x":{"x1":5},"y":{"y1":5}},{"x":{"x1":6},"y":{"y1":6}}]}}

这会替换值,但只返回修改后的字典而不是完整的 JSON 文件:

% jq -Mc '.a.b[] | .x.x1 = .y.y1' foo.js
{"x":{"x1":5},"y":{"y1":5}}
{"x":{"x1":6},"y":{"y1":6}}

这可以用常量值替换 x1:

% jq -Mc '(.a.b[] | .x.x1) |= 9' foo.js
{"a":{"b":[{"x":{"x1":9},"y":{"y1":5}},{"x":{"x1":9},"y":{"y1":6}}]}}

但是这种使用相同想法的尝试并不奏效:

% jq -Mc '(.a.b[] | .x.x1) |= .y.y1' foo.js
jq: error (at foo.js:1): Cannot index number with string "y"

最佳答案

你几乎明白了。使用这个:

.a.b[] |= (.x.x1 = .y.y1)

我们要更新 .a.b 数组中的每个项目,其中 .x.x1.y.y1 的值>

关于jq - 使用 JQ 将一个值替换为同一字典中的另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38860798/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com