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

如何使用YQ将file2.yaml列表替换到file1.yaml并保留缩进格式?

解决YQ替换YAML节点时的缩进格式问题

要实现用file2.yaml中app.list-data的列表替换file1.yaml里default.app.service-v1.country.list的LIST_TO_REPLACE值,同时保持file1原有的缩进格式,用mikefarah/yq(当前主流版本)可以直接通过赋值命令自动适配缩进,以下是具体方案:

方法一:直接赋值(推荐)

执行这条命令,yq会自动继承目标节点的缩进层级,无需手动调整格式:

yq eval '.default.app.service-v1.country.list = load("file2.yaml").app.list-data' file1.yaml > output.yaml

方法二:清空后追加(适配复杂场景)

如果直接赋值出现异常,可以先将目标节点置空,再追加file2的列表数据,同样会自动匹配原文件缩进:

yq eval '
  .default.app.service-v1.country.list = [] |
  .default.app.service-v1.country.list += load("file2.yaml").app.list-data
' file1.yaml > output.yaml

验证结果

执行命令后,output.yaml的格式会和你预期的一致:

default:
  app:
    service-v1:
      country:
        list:
          - key1: value
            key2: value
            key3: 
          - list1
          - list2
          - list3
          - key4: value
            key5: value
            key6: 
          - list1
          - list2
          - list3 

注意:如果使用的是旧版本yq(如kislyuk/yq),语法会有差异,建议升级到mikefarah/yq最新版,它对YAML格式的兼容性和自动缩进处理更完善。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:01:01