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

如何合并两个YAML文件以实现相同路径列表内容叠加扩展需求

解决方案

你可以用命令行YAML处理工具 yq(mikefarah/yq v4及以上版本)实现需求,不需要重复编写公共YAML内容,有两种常用实现方式:

方式1:直接在脚本中追加指定列表元素

如果触发条件时只需要追加固定元素,不需要额外的增量YAML文件,直接操作基础YAML即可:

  1. 你的基础YAML文件记为base.yaml
  2. 脚本中条件满足时执行以下命令:
# 此处替换为你自己的条件判断逻辑
if [ $YOUR_CONDITION = true ]; then
  yq '.friends[0].family.extended.cousins += ["Arthur", "Michael", "Frank"]' base.yaml > final.yaml
fi

命令中+=操作符会直接在目标列表末尾追加元素,其他所有公共字段完全保留。

方式2:合并两个YAML文件,自动追加同路径列表

如果你需要将增量配置单独存为YAML文件,也可以用yq的合并规则实现:

  1. 增量YAML文件add.yaml只需要写需要追加的字段,不需要重复公共内容:
friends:
  - friendName: Bob
    family:
       extended:
          cousins:
             - Arthur
             - Michael
             - Frank
  1. 执行合并命令,*+操作符会自动合并同路径列表:
yq '. *=+ load("add.yaml")' base.yaml > final.yaml

该命令的合并规则符合你的要求:

  • 路径不同的字段全部保留
  • 同路径为普通值时,后续值覆盖原有值
  • 同路径为列表时,后续列表的元素自动追加到原有列表末尾

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:36:02