2016-11-24 1 views
0

현재이 작동 : 그것은 다윈 "와"인텔 모두를 포함하는 객체를 반환JQ - 선택은 배열을 포함 및/또는

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

array = ["darwin","intel"]합니다. 어떻게하면 다윈 "및/또는"인텔이 포함 된 객체를 반환 할 수 있습니까? 간단히 사용할

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

필터입니다 :

답변

1

가정 당신의 JQ 나는 intersectq/2의 다음과 같은 정의를 사용하는 것이 좋습니다 것, any/2

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

같이 :

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

감사합니다. 작동합니다! 지금 왜 그 이유를 알아야합니까? – pkpowell