sed 和 grep 批量替换文件内容--高级用法

sed -i "s|groups\['consul'\]\[0\]|hostvars\['consul-1'\]\['ansible_host'\]|g" `grep -rl "groups\['consul'\]\[0\]" ./`

注意的是 's|||g' 语句,当要替换的内容中有单引号   ' '   的存在则外边要用 " " 双引号括起来 否则双引号和单引号都可。"s|||g"

下面是另一个案例:

全局替换当前目录下yml文件中limits中cpu和mem,但是和requests中的cpu和mem值完全一样,要替换的变量的名字是不一样的,为了区分开limits和requests中的cpu这里采用了sed的高级用法。

 

 n --next 下一个的意思,下面的意思就是匹配limits,然后是他的(n)下一个开始替换也就是指定了替换limits的cpu值.

sed '/limits/{n;s/cpu: "0.3"/cpu: \{\{ k8s_resources_limits_cpu \}\}/}' `grep 'cpu: "0.3"' -rl ./`

 

 

sed -i '/cpu: "{{ k8s_resources_limits_cpu }}"/{n;s/memory: 2Gi/memory: \"{\{ k8s_resources_limits_mem \}\}"/}' `grep 'cpu: "{{ k8s_resources_limits_cpu }}"' -rl ./`

 

posted @ 2021-03-09 16:04  a戴姆勒  阅读(900)  评论(0编辑  收藏  举报