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

curl结合jq通过正则匹配提取指定service_id对应state的方法

jq提取JSON数组匹配字段操作指南

直接执行.services.state无法得到预期结果的核心原因是:services是数组结构,无法直接通过点运算符读取数组内对象的属性,必须先遍历数组、筛选目标元素后再取值。


匹配test@*前缀规则提取state字段

如果只需要匹配service_id以test@开头的条目,不需要使用正则,直接用jq内置的前缀判断函数即可,完整命令如下:

curl -sk https://example/test | jq -r '.services[] | select(.service_id | startswith("test@")) | .state'

命令逻辑说明:

  • .services[]:遍历services数组下的每一个对象元素
  • select(判断条件):过滤出符合括号内条件的数组元素
  • startswith("test@"):判断元素的service_id字段是否以test@开头,完全对应test@*的通配匹配需求
  • 最终输出符合条件元素的state字段值,如果存在多个符合匹配规则的service条目,对应state值会逐行输出

使用正则规则自定义匹配过滤

如果需要使用正则实现更灵活的匹配逻辑,jq提供了内置的test()函数支持正则匹配,对应test@*规则的命令如下:

curl -sk https://example/test | jq -r '.services[] | select(.service_id | test("^test@.*")) | .state'

正则使用说明:

  • test()是jq内置的正则匹配函数,传入标准正则表达式即可完成自定义匹配
  • 示例中^test@.*是标准正则表达式,^匹配字符串开头,.*匹配任意长度的任意字符,和test@*的通配规则完全等价
  • 如果需要调整匹配规则,直接替换test()函数内的正则字符串即可,支持匹配包含特定字符、匹配固定后缀、匹配特定格式ID等各类正则场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:21:39