You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JQ正则匹配筛选含wkn的host_name并统计数量

问题原因及正确JQ写法

错误写法分析

  • 第一种写法错误:==是精确相等匹配运算符,不支持通配符匹配逻辑,代码中的"*wkn01.*"会被当做普通字符串做全量匹配,自然无符合条件的结果。
  • 第二种写法错误:正则表达式语法不符合规范,*是重复量词,必须搭配前置匹配字符使用,直接以*开头会触发语法报错。同时你要匹配的是所有包含wkn的主机名,不需要限定01后缀。

额外注意:你原curl命令中的-sH参数错误,-H参数需要后接请求头键值对,如果你不需要自定义请求头,只需保留静默模式参数-s即可。

正确写法

1. 筛选出所有主机名含wkn的主机条目

curl -s http://10.10.0.10:8080/api/v1/clusters/test/hosts?fields=Hosts/host_name,Hosts/ip \
| jq '.items[] | select(.Hosts.host_name | test("wkn"))'

2. 直接统计符合条件的主机数量

如果接口返回结构是包裹在items数组中的标准格式,用以下命令:

curl -s http://10.10.0.10:8080/api/v1/clusters/test/hosts?fields=Hosts/host_name,Hosts/ip \
| jq '[.items[] | select(.Hosts.host_name | test("wkn"))] | length'

如果接口返回的是你示例中给出的多个独立JSON对象的格式,给jq增加-s参数合并输入流即可:

curl -s http://10.10.0.10:8080/api/v1/clusters/test/hosts?fields=Hosts/host_name,Hosts/ip \
| jq -s '[.[] | select(.Hosts.host_name | test("wkn"))] | length'

执行上述命令会直接输出符合条件的主机数量,你的示例数据会返回2。

内容的提问来源于stack exchange,提问作者Eva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:06:01