0
目前這個工程:JQ - 選擇包含數組或/和
jq -r '.[] | select(.hosts | contains('$array')).hostName')
如果array = ["darwin","intel"]
它返回一個包含兩個達爾文「和」英特爾的對象。 如何讓它返回包含達爾文的對象「和/或」英特爾?
目前這個工程: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