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

使用yq4将YAML指定key下内容移动到目标路径的实现方法

正确命令(一步完成)

直接执行以下命令即可原地修改文件,完成字段迁移+删除旧字段的操作:

yq eval --inplace '.vehicles.car *= .car_facts | del(.car_facts)' 你的yaml文件路径.yaml

命令说明

  • *= 是yq4中专门用于深度合并两个映射的运算符,支持多层嵌套字段合并,符合你的使用场景,无字段冲突的情况下不会有覆盖问题
  • 管道符|用来串联多步操作,del(.car_facts)直接删除原有的car_facts根字段

如果需要分两步操作,也可以分别执行:

  1. 先把car_facts的内容合并到vehicles.car下:
yq eval --inplace '.vehicles.car *= .car_facts' 你的yaml文件路径.yaml
  1. 再删除旧的car_facts字段:
yq eval --inplace 'del(.car_facts)' 你的yaml文件路径.yaml

报错原因说明

你之前执行报错是两个原因导致:

  • 赋值方向写反,应该是目标字段vehicles.car合并源字段car_facts的内容,你写反了源和目标
  • +=运算符仅支持字符串、数组的追加操作,不支持映射(map)类型的合并,所以会提示不支持map相加的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:39:02