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

如何使用yq统计多文档YAML文件中的有效文档数量?

用yq统计多文档YAML的文档数量

先明确你的YAML文档数量

你的YAML文件实际包含3个文档,不是你认为的2个:

---
one: hey  # 第一个文档
---
two: you  # 第二个文档
---       # 第三个空文档(只要出现`---`就代表新文档开始,哪怕后面无内容)

YAML规范里,---是文档起始分隔符,只要出现就标记一个新文档的启动,即使后面没有内容,也是有效的空文档。

正确的yq统计命令

针对当前主流的mikefarah/yq v4+版本,用以下命令可直接得到文档总数:

方法1:利用eval-all的数组特性

yq ea 'length' your_file.yaml

ea(eval-all)模式会把所有YAML文档合并成一个数组,length直接返回数组长度,也就是文档数量,执行后输出3。

方法2:用ireduce累加计数

yq ea 'ireduce(0; . + 1)' your_file.yaml

ireduce会遍历所有文档,从初始值0开始,每处理一个文档就加1,最终输出总计数3。

你之前的命令问题解释

  1. 执行yq ea '. as $item ireduce (0; . + 1)'得到三个3:
    这个写法逻辑有误,在ea模式下,你先把当前文档赋值给$item再执行ireduce,相当于对每个文档都重新遍历所有文档做一次累加,所以每个文档都会输出最终累加结果3,总共输出三次。

  2. 执行yq e '. as $item ireduce (0; . + 1)'得到三个1:
    e(eval)模式是逐个处理单个文档,ireduce在这里只对当前单个文档做累加,每个文档单独计数都是1,所以三个文档输出三次1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:37:54