我有两个json输入,我想jq构建一个新的json,将元素从第二个数组复制到第一个的对应位置:
第一个json:
[
{"foo": "foo1", "bar": "bar1"},
{"foo": "foo2", "bar": "bar2"},
{"foo": "foo3", "bar": "bar3"}
]
第二个json:
[[
"baz1",
"baz2",
"baz3"
]]
预期结果:
[
{"foo": "foo1", "bar": "bar1", "baz": "baz1"},
{"foo": "foo2", "bar": "bar2", "baz": "baz2"},
{"foo": "foo3", "bar": "bar3", "baz": "baz3"}
]
我已经尝试过此命令行,但似乎不起作用
jq -n --argfile o1 "1st.json" --argfile o2 "2nd.json" "[$o1 [] | .baz= $o2[][]]"
答案 0 :(得分:1)
以下内容采用了一种简单的方法,以成为行人:
jq -s -f merge.jq 1.json 2.json
假设文件merge.jq
包含:
.[1][0] as $two
| .[0]
| reduce range(0; length) as $i (.;
.[$i].baz = $two[$i] )
如果您的jq支持--argfile选项,则可以通过运行以下命令来避免“浪费”的开销:
jq --argfile two 2.json -f merge.jq 1.json
假设merge.jq
包含:
reduce range(0; length) as $i (.;
.[$i].baz = $two[0][$i] )