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

如何使用yq在file.yaml指定位置添加YAML内容

使用yq为指定集群添加YAML内容

针对你提供的YAML文件,以下是基于**mikefarah/yq v4+**版本的命令,可仅为name为orange的集群添加指定的extensions内容:

yq e '.clusters[] |= (select(.name == "orange") | .cluster.extensions = [{"name": "xx.io", "extension": {"subnet": ["1.2.3.4/32"]}}]) // .' file.yaml

命令说明:

  • .clusters[]:遍历clusters数组中的每一个集群对象
  • |=:将修改后的结果赋值回原数组位置,确保原结构保留
  • select(.name == "orange"):精准筛选出name字段为orange的集群项
  • .cluster.extensions = [...]:给选中集群的cluster节点添加指定的extensions嵌套结构
  • // .:对未匹配到orange的集群项(比如apple),直接保留原内容不做修改

执行后结果:

apiVersion: v1
clusters:
  - cluster:
      age: 50
      server: dev
    name: apple
  - cluster:
      age: 50
      server: prod
      extensions:
      - name: xx.io
        extension:
          subnet:
          - 1.2.3.4/32
    name: orange

如果需要直接修改原文件(而非仅输出结果),可添加-i参数:

yq -i e '.clusters[] |= (select(.name == "orange") | .cluster.extensions = [{"name": "xx.io", "extension": {"subnet": ["1.2.3.4/32"]}}]) // .' file.yaml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:05:46