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

如何使用yq索引带---分隔符的多文档YAML文件

多文档YAML的yq修改方案

你遇到的问题是因为带---分隔的YAML属于多文档YAML,不同yq版本对这类文件的处理语法不同,结合你报错里的jq提示,以下是对应解决方法:

针对kislyuk/yq(python-yq,依赖jq)

这个版本默认逐个处理单文档,不会自动把多文档转为数组,所以直接用.[0]会触发jq的索引错误。需要添加-s(--slurp)参数将所有文档合并为数组后再修改:

yq -i -y -s '.[0].hello = "world"' ./$PATH

要修改第二个文档,把索引换成1即可:

yq -i -y -s '.[1].hello = "foo"' ./$PATH

针对mikefarah/yq v4+(当前主流的Go版yq)

这个版本对多文档的处理更灵活,有两种常用方式:

方式1:通过文档索引选择修改

yq -i 'select(documentIndex == 0).hello = "world"' ./$PATH

缩写di可以替代documentIndex,写法更简洁:

yq -i 'select(di == 0).hello = "world"' ./$PATH

方式2:转为数组操作

同样可以用-s参数把多文档转为数组后修改:

yq -i -s '.[0].hello = "world"' ./$PATH

验证结果

修改后你的YAML文件会变成:

hello: world
---
hello: null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:22:18