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

yq 3.4.1无法持久写入YAML文件,仅写入部分内容求助

解决yq 3.4.1无法完整写入YAML文件的问题

问题情况

使用yq 3.4.1向YAML文件写入数据时,执行以下命令后控制台输出符合预期,但目标文件仅保留第一段内容,无法生成完整的双段YAML。

执行的命令:

yq n affinity-controller.fresh_install "False" > history.yaml
yq w -d'*' history.yaml snapshot-validation-webhook.fresh_install "False"

当前history.yaml内容:

affinity-controller:
  fresh_install: False

预期的history.yaml内容:

affinity-controller:
  fresh_install: False
snapshot-validation-webhook:
  fresh_install: False

问题原因

yq v3.x的w(write)命令默认将修改后的结果输出到标准输出(控制台),不会直接覆盖原文件。你执行的第二个命令只是在控制台展示了完整内容,但没有将结果写入到history.yaml中。

解决方案

方案1:使用重定向覆盖原文件

将第二个命令的输出重定向到目标文件,直接覆盖原有内容:

yq w -d'*' history.yaml snapshot-validation-webhook.fresh_install "False" > history.yaml

注意:部分shell环境下,重定向会先清空目标文件再写入,可能导致意外数据丢失。更稳妥的方式是通过临时文件中转:

yq w -d'*' history.yaml snapshot-validation-webhook.fresh_install "False" > temp.yaml && mv temp.yaml history.yaml

方案2:使用-i参数原地修改文件

yq v3.x支持-i(in-place)选项,直接在原文件上修改内容,无需手动重定向:

yq w -i -d'*' history.yaml snapshot-validation-webhook.fresh_install "False"

验证

执行上述任一方案后,查看history.yaml即可得到预期的完整双段YAML内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:15:13