【发布时间】:2023-04-01 11:05:01
【问题描述】:
目前可行:
jq -r '.[] | select(.hosts | contains('$array')).hostName')
如果array = ["darwin","intel"]it 返回包含 darwin "和" intel 的对象。
如何让它返回包含 darwin“和/或”intel 的对象?
【问题讨论】:
目前可行:
jq -r '.[] | select(.hosts | contains('$array')).hostName')
如果array = ["darwin","intel"]it 返回包含 darwin "和" intel 的对象。
如何让它返回包含 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
【讨论】: