我正在寻找能够合并两个数组变量(而不是文件)的JQ查询,并且还可以让第一个数组被第二个数组中较新的值覆盖。例如:
#!/bin/bash -e
firstArrayVariable='
[
{
"Key": "A B",
"Value": "1 2"
},
{
"Key": "C D",
"Value": "3 4"
},
{
"Key": "E F",
"Value": "5 6"
},
{
"Key": "G H",
"Value": "9 10"
}
]
'
secondArrayVariable='
[
{
"Key": "A B",
"Value": "1 2"
},
{
"Key": "C D",
"Value": "3 4"
},
{
"Key": "G H",
"Value": "11 12"
},
{
"Key": "J K",
"Value": "15 16"
}
]
'
jq \
--compact-output \
--raw-output \
--arg jqSecondArrayVariable "${secondArrayVariable}" \
'. + $jqSecondArrayVariable // empty' \
<<< "${firstArrayVariable}"
我无法使它工作并出现以下错误:
我期望合并后的数组结果是什么jq: error (at :19): 无法添加数组 ([{"Key":"A ...) 和字符串 ("\n [\n ...)
[
{
"Key": "A B",
"Value": "1 2"
},
{
"Key": "C D",
"Value": "3 4"
},
{
"Key": "E F",
"Value": "5 6"
},
{
"Key": "G H",
"Value": "11 12"
},
{
"Key": "J K",
"Value": "15 16"
}
]
非常感谢您的帮助!
更新内容
我尝试使用@peak建议的--argjson
,它可以连接数组,但无法合并两个数组。现在我得到的结果是一个包含重复对象的数组。