Json 使用jq通过包含字符串来查找数组元素

Json 使用jq通过包含字符串来查找数组元素,json,jq,Json,Jq,我有一个数组“operations”,我想从中返回包含匹配字符串的所有元素,如“w51”。到目前为止,我发现的所有示例都涉及键值对。我正在使用jq.operations[]”

我有一个数组“operations”,我想从中返回包含匹配字符串的所有元素,如
“w51”
。到目前为止,我发现的所有示例都涉及键值对。我正在使用
jq.operations[]”
检索元素

{
  "operations": [
    [
      "create",
      "w51",
      "rwt.widgets.Label",
      {
        "parent": "w41",
        "style": [
          "NONE"
        ],
        "bounds": [
          101,
          0,
          49,
          42
        ],
        "tabIndex": -1,
        "customVariant": "variant_pufferLabelLogout"
      }
    ],
    [
      "create",
      "w39",
      "rwt.widgets.Composite",
      {
        "parent": "w34",
        "style": [
          "NONE"
        ],
        "children": [
          "w52"
        ],
        "bounds": [
          0,
          42,
          762,
          868
        ],
        "tabIndex": -1,
        "clientArea": [
          0,
          0,
          762,
          868
        ]
      }
    ]
  ]
}
搜索包含“w51”的数组元素时,我的预期输出如下:

[
      "create",
      "w51",
      "rwt.widgets.Label",
      {
        "parent": "w41",
        "style": [
          "NONE"
        ],
        "bounds": [
          101,
          0,
          49,
          42
        ],
        "tabIndex": -1,
        "customVariant": "variant_pufferLabelLogout"
      }
]

如果您使用jq 1.4版或更高版本,则以下内容应产生所需的输出:

.operations[]
| select( index("w51") )
选择 根据您拥有的jq版本的不同,有很多选择。如果您的jq有
any/0
,以下是一个有效的选项:

.operations[] | select( any(. == "w51" ) )

如果您使用jq 1.4版或更高版本,则以下内容应产生所需的输出:

.operations[]
| select( index("w51") )
选择 根据您拥有的jq版本的不同,有很多选择。如果您的jq有
any/0
,以下是一个有效的选项:

.operations[] | select( any(. == "w51" ) )

您是否尝试过
jq.operations[]|选择(在(.[];“w51”))文件
?这给了我一个错误:
jq:error:IN/1未在第1行定义:
更新到版本1.6不幸的是,我对正在使用的系统没有影响。没有别的办法了吗?非常感谢!这很有效。我使用的是raspberry pi,似乎还没有针对arm处理器的v1.6版本。您是否尝试过
jq“。操作[]|选择(IN([];“w51”)”文件
?这给了我一个错误:
jq:error:IN/1未在第1行定义:
更新到1.6版不幸的是,我对我正在使用的系统没有影响。没有别的办法了吗?非常感谢!这很有效。我使用的是raspberry pi,似乎还没有针对arm处理器的v1.6版本。