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

如何用yq(v4.30.6)修改含斜杠的YAML字段值

解决yq修改带特殊字符的Annotations字段问题

问题出在a.b.c/d这个键名包含点(.)和斜杠(/)——yq默认会把点解析为嵌套层级的分隔符,斜杠也有特殊语法用途,直接写.metadata.annotations.a.b.c/d会被拆解成annotations→a→b→c/d的嵌套结构,自然匹配不到原有的单个键,反而生成了新的嵌套字段。

正确的实现方式

推荐用--arg参数传递变量(避免引号转义问题),同时用索引语法包裹带特殊字符的键名:

MY_VARIABLE=xxx
yq --arg val "$MY_VARIABLE" '.metadata.namespace = $val | .metadata.annotations["a.b.c/d"] = $val' test.yaml

执行后结果

修改后的test.yaml内容如下:

apiVersion: v1
metadata:
  annotations:
    a.b.c/d: xxx
  namespace: xxx

补充说明

如果不想用--arg,也可以直接拼接变量,但要注意引号转义,写法如下:

MY_VARIABLE=xxx
yq '.metadata.namespace = "'"$MY_VARIABLE"'" | .metadata.annotations["a.b.c/d"] = "'"$MY_VARIABLE"'"' test.yaml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:07:25