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
目前有效:
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