Bash
在特定語法後替換名稱
我們有 Bash 腳本。我們想在 Bash 腳本中更改名稱 -
master02
with 。$machine_master
value=master02_up #master02 http://master02.$domain:8080
怎麼變
master02
,$machine_master
只有在master02
之後http://master02
。預期輸出:
value=master02_up #master02 http://$machine_master.$domain:8080
使用標準
sed
:sed 's#http://master02.\$domain:8080#http://$machine_master.$domain:8080#' file >newfile
這將替換確切的字元串
http://master02.$domain:8080
並將http://$machine_master.$domain:8080
結果寫入新文件。必須對
$
in$domain
進行轉義,以免被解釋為“行尾”模式。替換文本中的$
不需要轉義,因為這部分不是模式。我
#
用作sed
替換命令 (s
) 的分隔符,因為模式和替換文本都包含/
預設分隔符。該命令也可以縮短為
sed 's#http://master02#http://$machine_master#' file >newfile
如果這樣做是安全的(這取決於文件的內容以及您要替換的文本實例)。
測試:
$ cat file value=master02_up #master02 http://master02.$domain:8080 $ sed 's#http://master02.\$domain:8080#http://$machine_master.$domain:8080#' file >newfile $ cat newfile value=master02_up #master02 http://$machine_master.$domain:8080