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

如何用yq更新YAML中JSON字符串字段并保留格式化输出

多文档YAML中带格式JSON字段的更新与格式化方案

问题背景

存在一个多文档结构的sample.yaml文件,其中**action值为"want-to-update"**的文档内,foo字段是一个带有换行和缩进的格式化JSON字符串。需要将该JSON里的a字段值从"actual A"修改为"updated A",且处理后要保留JSON的换行缩进格式,避免被压缩成单行。

解决命令

使用mikefarah/yq(v4及以上版本)结合JSON格式化能力,执行以下命令:

预览修改结果(不改动原文件)

yq e 'select(.action == "want-to-update") | .foo = (.foo | fromjson | .a = "updated A" | tojson | @json)' sample.yaml

原地修改原文件

yq -i e 'select(.action == "want-to-update") | .foo = (.foo | fromjson | .a = "updated A" | tojson | @json)' sample.yaml

命令拆解

  • select(.action == "want-to-update"):精准筛选出需要处理的目标YAML文档
  • .foo | fromjson:把foo字段的JSON字符串解析为可操作的JSON对象
  • .a = "updated A":修改JSON对象中a字段的对应值
  • tojson | @json:先将修改后的JSON对象转回字符串,再通过@json修饰符强制保留格式化的换行与缩进,避免被压缩

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:45:38