如何用Mike Farah版yq修改指定Kustomization类型YAML的spec.path
解决方法
针对你的需求,用Mike Farah版本的yq可以这样实现:
基础替换命令(终端预览结果)
假设你要把路径前缀改成./new-worker/,执行下面的命令:
yq e '(.[] | select(.kind == "Kustomization") | .spec.path) |= sub("./worker-1/", "./new-worker/")' your-file.yaml
命令拆解(新手友好版)
.[]:遍历YAML文件中所有用---分隔的独立文档select(.kind == "Kustomization"):只筛选出kind为Kustomization的文档.spec.path:定位到这些文档里的spec.path字段|= sub(...):对字段值执行字符串替换,把./worker-1/替换成你指定的新前缀
直接修改原文件(无需预览)
如果确认替换规则正确,想直接修改原文件,加上-i参数(原地编辑):
yq -i e '(.[] | select(.kind == "Kustomization") | .spec.path) |= sub("./worker-1/", "./new-worker/")' your-file.yaml
验证效果
执行后,原文件中两个Kustomization对象的spec.path会变成:
./new-worker/resources./new-worker/dependencies
其余的Bucket和Secret内容完全保持不变。
内容的提问来源于stack exchange,提问作者Joseph Gagnon
相关产品推荐
相关产品推荐

