【发布时间】:2018-12-09 10:09:53
【问题描述】:
我有 2 个 json 数组:data1 和 data2。 我正在尝试使用 jq 将 2 个 json 数组合并为一个 json。 为此:我正在从 data1 中获取共享属性“region”,并尝试在 data2 中找到匹配的属性。 然而,jq 的 select 无法使用我传递的参数,但它确实适用于任何特定值。
data1='[
{"domain": "domain1", "region": "region1"}, {"domain": "domain2","region": "region2"}, { "domain": "domain3", "region": "region3"} ]'
data2='[
{"region": "eustaging1", "secret": "s1"}, {"region": "eustaging2", "secret": "s2"}, { "region": "eustaging2", "secret": "s3"}]'
for k in $(jq -c '.[]' <<< "$data1"); do
crgn=$(jq '.region' <<< $k)
# select with parameter not working :(
matching_obj=$(jq -c '.[] | select(.region=="$crgn") ' <<< "$data2")
echo "current region is $crgn"
echo "matching object is $matching_obj"
done
输出:
current region is "region1"
matching object is
current region is "region2"
matching object is
current region is "region3"
matching object is
【问题讨论】:
-
请遵循minimal reproducible example 准则。期望的输出是什么?另外,请注意,根据问题的描述,似乎只有 jq 的解决方案可能是最好的(到目前为止)。
标签: json bash shell parsing jq