如何将多条修改YAML资源配置的SED -E命令合并为单条?
合并多条sed命令修改YAML资源配置
你可以通过sed的-e选项将多条编辑命令合并为单条执行,也可以通过分组操作优化命令效率,以下是两种可行方案:
方案1:直接串联原命令
将每条原sed命令作为一个-e参数传入,即可合并为单条命令:
sed -E -e '/limits:/!b;n;s/^([[:blank:]]*cpu: ).*/\1900m/' \ -e '/limits:/!b;n;n;s/^([[:blank:]]*memory: ).*/\1900Mi/' \ -e '/requests:/!b;n;s/^([[:blank:]]*cpu: ).*/\1700m/' \ -e '/requests:/!b;n;n;s/^([[:blank:]]*memory: ).*/\1500Mi/' mychart.yaml
方案2:分组优化(更高效)
通过大括号{}将匹配到目标节点后的操作分组,避免重复匹配limits:和requests:,提升执行效率:
sed -E -e '/limits:/{n;s/^([[:blank:]]*cpu: ).*/\1900m/;n;s/^([[:blank:]]*memory: ).*/\1900Mi/}' \ -e '/requests:/{n;s/^([[:blank:]]*cpu: ).*/\1700m/;n;s/^([[:blank:]]*memory: ).*/\1500Mi/}' mychart.yaml
注意事项
- 先不加
-i参数运行命令,确认输出符合预期后,再添加-i(或-i.bak保留原文件备份)直接修改原文件:sed -i.bak -E -e '...' mychart.yaml - 确保YAML文件的缩进格式与命令匹配,命令中的
[[:blank:]]会匹配空格或制表符,适配常见的YAML缩进风格。
内容的提问来源于stack exchange,提问作者Seun
相关产品推荐
相关产品推荐

