我正在使用bash腳本替換文件中兩個字符串之間的特定文本。它看起來像這樣:用bash代替部分url
GATEWAYURL = 'myDomain.com'
CONFIGFILE = 'full/path/to/config.file'
replacementString1="s/(?<=gatewayIp:).*(?=,)/\"${GATEWAYURL}\"/;"
perl -pi -e $replacementString1 $CONFIGFILE
這個偉大的工程,使看起來像這樣的文件中的行:
gatewayIp:"the.old.domain.name.com",
是這樣的:
gatewayIp:"myDomain.com",
所有這些都是好的,但對於我的生活,我無法弄清楚如何讓這個工作來取代部分網址。例如,我想:
redirectUri: "http://the.old.domain.name.com/oauth2callback.html",
是:
redirectUri: "http://myDomain.com/oauth2callback.html",
我認爲這會工作:
replacementString1="s/(?<=redirectUri: \"http:\/\/).*(?=\/oauth2callback.html)/${GATEWAYURL}/;"
不過,我得到以下錯誤:
Substitution pattern not terminated at -e line 1.
我嘗試了其他一些逃避方法/和/在網址,但似乎無法讓它正常工作。
你不告訴你是如何定義'GATEWAYURL'但顯然它包含轉義斜槓。最簡單的解決方法是使用文本中不會出現的分隔符; @EranBen-Natan的答案用'sed'演示了這一點,但是您可以在Perl中使用相同的語法。 – tripleee