如何用yq为已有YAML文件添加新根节点?
使用yq给YAML文件添加新根节点并嵌套原有内容
完全可以实现这个需求,用mikefarah/yq(v4及以上版本)的话,一行命令就能把原有所有根节点内容嵌套到新的mainkey下:
yq '. = {"mainkey": .}' values.yaml
如果需要直接修改原文件(原地更新),加上-i参数即可:
yq -i '. = {"mainkey": .}' values.yaml
命令说明
这个命令逻辑很直白:
.代表当前整个YAML文档的根节点内容- 我们将根节点重新赋值为一个新对象,这个对象仅包含
mainkey键,它的值就是原来的整个根节点内容
效果验证
原values.yaml内容:
key1: value1 key2: value2 key3: key31: value31 key32: value32
执行命令后,文件内容会变为:
mainkey: key1: value1 key2: value2 key3: key31: value31 key32: value32
你之前用+或merge没得到预期结果,是因为这些命令是用来合并平级节点的,会把mainkey和原有key1、key2等放在同一层级,而非将原有内容嵌套到mainkey内部。
内容的提问来源于stack exchange,提问作者Vini
相关产品推荐
相关产品推荐

