如何用另一个YAML文件内容更新目标YAML节点?
解决YAML节点替换问题
你遇到的问题是因为原命令没有限制输出仅保留修改后的第一个文件内容,导致yq将两个文件的处理结果都写入了file1.yaml。以下是两种可行的解决方法:
方法1:通过文件索引过滤输出
基于你原有的命令思路,最后加上select(fileIndex==0)来只保留第一个文件的修改结果:
yq -i e '(select(fileIndex==0).configmap.data = select(fileIndex==1).config) | select(fileIndex==0)' file1.yaml file2.yaml
方法2:加载第二个文件为变量(更直观)
直接将file2.yaml加载为变量,再替换file1.yaml的指定节点,这种写法逻辑更清晰,也不会产生额外输出:
yq -i e 'load("file2.yaml") as $file2 | .configmap.data = $file2.config' file1.yaml
执行上述任一命令后,file1.yaml的内容会变为:
key: value configmap: data: testKey: testValue
内容的提问来源于stack exchange,提问作者shd
相关产品推荐
相关产品推荐

