针对JQ中选择中的多个值测试字段
我有一个要在 JQ 中选择的值列表。也就是说,我的 JSON 看起来像这样:
[
{
"id": "a"
},
{
"id": "b"
},
{
"id": "z"
}
]
我的值列表类似于a b c. 此列表在 bash 中存储为标量变量(非硬编码)。如何从此值列表中从 JSON 中选择相应的对象?
我已经看到其他关于使用值在 JQ 查询中选择某些内容的问题,但在此之前我还没有看到基于多个值在 JQ 中选择的示例。例如,在给定的值列表中选择 JSON。
回答
使用--arg指令将 id 列表传递给 JQ ,将其拆分为一个数组并将其保存在变量中,并id使用IN内置函数测试对象的字段是否包含驻留在该数组中的值。
var='a b c'
jq --arg ids "$var" '($ids / " ") as $ids
| .[] | select(.id | IN($ids[]))' file