通过sed命令和正则表达式,我们可以方便的完成内容替换。
这里我们以要把内容:
image: registry/mes-service:0
结尾处的0 替换为 99
image: registry/mes-service:99
为例进行展示。
以下是几个简单的替换示例
1、替换echo命令中的内容
echo image: registry/mes-service:.*|sed 's/mes-service:.*/mes-service:99/g'
2、替换cat的文件显示结果
cat green-service.yml|sed 's/mes-service:.*/mes-service:99/g'
3、把sed命令装仅shell脚本中,通过参数改变替换内容,并将替换结果写入文件
新建shell(文件名 changeversion),内容如下:
sed -i "s/mes-service:.*/mes-service:$1/g" service.yml cat service.yml
其中service.yml中,保存有我们文章开头的那个目标字符串“image: registry/mes-service:0”
注意sed -i 后边的字符串通过双引号包了起来,而非单引号,这样里面的 $1才能生效,从我们的命令中获取
-i 可以将替换结果写入文件,真正的修改文件内容
给shell增加执行权限(chmod +x)后,执行
./changeversion 99
可以看到service.yml中的“image: registry/mes-service:0”被替换成了““image: registry/mes-service:99”