给定以下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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句