Bash

在特定語法後替換名稱

  • July 5, 2018

我們有 Bash 腳本。我們想在 Bash 腳本中更改名稱 - master02with 。$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

引用自:https://unix.stackexchange.com/questions/453543