You need to enable JavaScript to run this app. jq使用中通过select结合contains匹配字符串时遇到问题
优惠活动
大模型
产品
解决方案
定价
更多

jq使用中通过select结合contains匹配字符串时遇到问题

jq 嵌套结构字符串筛选调整方案

踩坑原因梳理

  • 路径与测试结构不匹配:你当前使用的命令引用了.results、.series、.values三个嵌套字段,但给出的测试样本是两个独立的流式JSON值(第一个是字符串数组["user","admin"],第二个是二维数组[["tdonn", true]]),样本内不存在上述键名,执行时自然无法匹配到目标内容。
  • 筛选逻辑层级错位:原命令select(.values[] | contains("tdon"))[]的写法,会在匹配到包含目标子串的数组行后,把行内所有元素(包括布尔值true)全部展开输出,无法精准只提取目标字符串。

适配测试样本的可直接运行命令

如果目标是遍历所有流式输入的JSON内容,提取包含tdon子串的字符串,直接执行以下命令即可输出tdonn:

jq -r '.. | strings | select(contains("tdon"))'

适配真实嵌套结构的修正写法

如果实际处理的是带results、series、values键的嵌套结构(比如常见的时序查询返回格式),可以将命令调整为:

jq -r '.results[].series[].values[] | .[] | select(contains("tdon"))'

这个写法会逐层展开values内的二维数组,对每个元素做子串匹配,最终只输出满足匹配条件的字符串,不会连带输出布尔值等其他类型的内容。

匹配小技巧:如果简单的contains无法满足判断需求,可以替换为test("tdon")做正则匹配,适配更复杂的字符串判断场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 23:57:01