yq 常用 YAML/JSON 处理速查

常用命令

yq '.' config.yaml
yq '.spec.replicas' deployment.yaml
yq '.spec.template.spec.containers[].image' pod.yaml
yq '.metadata.labels' resource.yaml
yq '.spec.replicas = 3' deployment.yaml
yq -i '.spec.replicas = 3' deployment.yaml
yq '.metadata.labels.app = "web"' deployment.yaml
yq 'select(.kind == "Deployment")' manifests.yaml
yq -o=json '.' config.yaml
yq -P '.' config.json
yq eval-all 'select(fileIndex == 0) * select(fileIndex == 1)' a.yaml b.yaml

常用表达式

表达式 含义
. 原样输出
.foo.bar 路径
.[0] / .[] 数组
= 赋值
` =`
select() 过滤
-o=json 输出 JSON
-P 美化输出
-i 就地修改

场景速查

目的 写法
读取镜像列表 yq '.spec.template.spec.containers[].image' deploy.yaml
批量改副本数 yq -i '.spec.replicas = 3' deploy.yaml
YAML 转 JSON yq -o=json '.' file.yaml
合并 YAML yq eval-all 'select(fileIndex==0) * select(fileIndex==1)' a.yaml b.yaml
删除字段 yq 'del(.metadata.annotations)' file.yaml
多文档处理 yq 'select(.kind == "Service")' all.yaml

易错点

相关命令