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

如何使用YQ过滤JSON数据后提取指定key的字段值

解决方案

针对kislyuk/yq 2.14.1版本提取指定条目字段的需求,直接在你现有筛选命令后追加字段读取的管道即可,不需要用with_entries/from_entries这类处理键值对的语法。

正确执行命令

yq -r '.[] | select(.id == "id_3") | .name' myres.json

执行效果

命令运行后会直接输出目标值:

name3

逻辑拆解

整条命令的执行逻辑按管道顺序拆分如下:

  • .[]:遍历输入的JSON数组,逐个取出数组内的对象
  • select(.id == "id_3"):过滤出id字段等于id_3的对象
  • | .name:在上一步过滤得到的对象上,直接读取name字段的取值
  • -r(raw输出模式):会自动去掉JSON字符串的包裹引号,直接返回纯文本结果

注:如果你的JSON数组里可能存在多个id为id_3的重复条目,只需要取第一个匹配结果,可以把命令调整为yq -r '.[] | select(.id == "id_3") | .name' myres.json | head -n1,当前示例数据id唯一,不需要额外处理。

你之前的命令只做了对象筛选,没有在筛选结果的基础上继续读取指定字段,所以才会返回整个完整对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:21:32