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

使用yq v4按条件更新YAML文件中特定对象值的问题求解

问题原因

你之前的写法会丢失第二个YAML文档,是因为select算子会直接过滤掉不符合匹配条件的文档,管道后续只会处理并输出匹配成功的那一份,自然就删掉了未匹配的第二个文档。

正确解法

要保留所有文档、仅修改匹配项,需要把更新逻辑包裹在括号内,限定修改操作的作用域,未匹配的文档会原样保留,正确命令如下:

yq e -i '(select(.spec.chart.name == "my-chart") | .spec.chart.version) = "1.0.0"' sample.yaml

执行效果

运行后两份YAML文档都会完整保留,其中spec.chart.name为my-chart的条目对应version会被更新为1.0.0,另一份文档的内容完全不变,符合你需要输出完整YAML用于内联编辑的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:54:01