通過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”