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

如何使用yq修改对象数组中含指定字符的YAML对象

使用yq实现需求的解决方案

针对你的YAML文件,使用mikefarah/yq v4+(当前主流版本)可以通过以下命令完成原地修改:

yq eval '.animals[] |= (to_entries | map(if .key | contains("a") then .value = {"has_a": true} + .value else . end) | from_entries)' your_file.yaml -i

命令解释

  1. .animals[]:遍历animals数组中的每一项(每项是单个键值对,比如{rabbit: {type: R}})
  2. to_entries:将单个键值对转换为标准键值条目格式(比如[{key: "rabbit", value: {type: R}}]),方便后续处理
  3. map(...):遍历每个键值条目:
    • 用.key | contains("a")判断键名是否包含字符a
    • 如果符合条件,就把value替换为{"has_a": true} + .value——这个操作会把has_a: true插入到属性的最开头,同时保留原有属性
    • 不符合条件的条目直接保留原样
  4. from_entries:将处理后的键值条目转换回原来的YAML映射格式
  5. -i:参数表示原地修改文件,执行后直接覆盖原文件内容

验证结果

执行命令后,原文件会被修改为你期望的格式:

animals:
  - rabbit:
      has_a: true
      type: R
  - dog:
      type: D
  - cat:
      has_a: true
      type: C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:43:18