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

如何用mikefarah's yq v4向YAML列表添加不存在的IP地址?

使用mikefarah's yq v4 条件性向YAML列表添加IP地址

需求说明

需在YAML文件的指定列表中,仅当目标IP不存在时才执行添加操作:

  • 若尝试添加已存在的IP(如向web列表添加1.1.1.1),文件内容保持不变
  • 若添加不存在的IP(如向web列表添加3.3.3.3),则将IP追加至列表末尾

原始YAML文件内容:

servers:
  web:
    - 1.1.1.1
  jobs:
    - 2.2.2.2

添加3.3.3.3后的期望结果:

servers:
  web:
    - 1.1.1.1
    - 3.3.3.3
  jobs:
    - 2.2.2.2

现有解法

当前采用「追加后去重」的方式实现添加逻辑:

yq '.servers.web = (.servers.web + ["3.3.3.3"]  | unique)' test.yml

删除IP的命令:

yq '.servers.web = (.servers.web - ["3.3.3.3"])' test.yml

更直观的条件添加方式

可以利用yq的contains函数做存在性判断,仅当目标IP不在列表中时才执行追加操作,逻辑更清晰:

yq 'if .servers.web | contains(["3.3.3.3"]) then . else .servers.web += ["3.3.3.3"] end' test.yml

该命令会先检查web列表是否包含目标IP:

  • 若包含,直接返回原内容,不做修改
  • 若不包含,则将IP追加到列表中

如果需要直接原地修改文件,加上-i参数即可:

yq -i 'if .servers.web | contains(["3.3.3.3"]) then . else .servers.web += ["3.3.3.3"] end' test.yml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:25:12