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

如何使用JQ提取子项值含FOO的条目并输出对应name字段内容

jq查询同时返回匹配规则对应的父级name字段方案

核心逻辑

原有命令直接展开.items[].rules[]会丢失上一级items节点的name信息,只需要在展开rules前暂存当前item的name值,和匹配到的规则绑定输出即可。

常用写法

1. 输出结构化JSON(保留匹配规则全量字段+父级name)

jq '.items[] | .name as $item_name | .rules[] | select(.expression | test(".*FOO.*")) | . + {"parent_name": $item_name}' testfile.json

输出示例:

{
  "expression": "expresFOOsion1",
  "parent_name": "test1"
}

2. 自定义输出指定字段

如果只需要name和expression两个字段,可以调整最后构造的输出对象:

jq '.items[] | .name as $item_name | .rules[] | select(.expression | test(".*FOO.*")) | {name: $item_name, expression: .expression}' testfile.json

3. 输出纯文本供shell后续处理

加-r参数输出原始字符串,用制表符分隔字段,无需额外解析JSON即可直接处理:

jq -r '.items[] | .name as $item_name | .rules[] | select(.expression | test(".*FOO.*")) | "\($item_name)\t\(.expression)"' testfile.json

输出示例:

test1	expresFOOsion1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:54:04