【问题标题】:jq - select contains array or/andjq - 选择包含数组或/和
【发布时间】:2023-04-01 11:05:01
【问题描述】:

目前可行:

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

如果array = ["darwin","intel"]it 返回包含 darwin "和" intel 的对象。 如何让它返回包含 darwin“和/或”intel 的对象?

【问题讨论】:

    标签: json jq


    【解决方案1】:

    假设你的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多