jq - select 包含数组 or/and

jq - select contains array or/and

目前有效:

jq -r '.[] | select(.hosts | contains('$array')).hostName')

If array = ["darwin","intel"]它 returns 对象包含两个 darwin "and" intel。 我怎样才能使 return 个包含 darwin "and/or" intel 的对象?

假设您的 jq 有 any/2,我建议使用 intersectq/2 的以下定义:

def intersectq(a;b): any(a[]; . as $x | any( b[]; . == $x) );

要使用的过滤器很简单:

.[] | select( intersectq(.hosts; $array)) | .hostName

如:

jq --argjson array '["darwin","intel"]' -r -f program.jq hosts.json