2016-11-24 12 views
0

が含まれている現在、これは動作します:JQ - 選択が配列または/および

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

それはダーウィン "と" Intelの両方を含むオブジェクトを返します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

関連する問題