JQ - 选择包含数组或/和
问题描述:
目前这个工程:JQ - 选择包含数组或/和
jq -r '.[] | select(.hosts | contains('$array')).hostName')
如果array = ["darwin","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
谢谢,这工作!现在我需要弄清楚为什么 – pkpowell