【发布时间】:2021-02-19 11:47:15
【问题描述】:
您好,我有两个文件,例如:
file1.json
{
"id": "001",
"name" : "my_policy",
"list_1": ["111111111", "22222222","33333333"],
"list_2": ["a", "b","c"],
.....
}
然后我有 file2.json(并不总是与 f1 具有相同的字段)
{
"list_1": ["111111111","111111122","33333333"],
"list_2": ["a", "b","c","d","e"],
.....
}
我如何通过 jq 合并两个文件 json 中的相同键值,并依赖于合并操作从 file1 键中删除 file2 中不存在的值? 所以得到这个结果:
{
"id": "001",
"policy" : "my_policy",
"list_1": ["111111111","111111122","33333333"],
"list_2": ["a", "b","c","d","e"],
.....
}
我通过以下方式解决了合并操作:
jq -s 'reduce .[] as $item ({}; reduce ($item | keys_unsorted[]) as $key (.; $item[$key] as $val | ( $val | type) as $ type | .[$key] = if ( $type == "array") then (.[$key] + $val | unique) elif ($type == "object") then (.[$key] + $val) else $val end ))' file1.json f2.json
我该如何解决?或者通过jq是不可能的?
【问题讨论】: