2013-02-04 134 views
0

在我的代碼,我需要地址來替換變量賦值:桑達分隔符選項

sed -i "s/^variable = .*$/variable = http://myaddress/" 

顯然,這不起作用,因爲前進的地址斜槓的sed命令的認可。

我想將$保留在第一個表達式的末尾,以便將任何內容替換爲行末。我也不想逃避美元符號,\$因爲它會搜索美元符號。

此外,我不想只是逃避地址中的正斜線,因爲在地址的某些地方也有變量。

我試過使用#而不是/,但必須包括我不想要的 - \$

是否有任何可以使用的替代分隔符適合我的情況?

+0

在命令周圍使用單引號,而不是雙引號。 –

回答

1

$由您的shell解釋。將整個參數包裝爲'以防止出現這種情況。

sed -i 's#^variable = .*$#variable = http://myaddress#' 
+1

'。*'的貪婪本質應該使'$'多餘,它會匹配到行尾。 –

0
sed -i "[email protected]^variable = .*[email protected] = http://[email protected]" file 

應該爲你工作。

請注意,$在第一個表達式中不是文獻「美元」,而是正則表達式,意思是該行的結尾。

+0

sed -i「s @^variable =。* $ @ variable = http:// $ {ENV_VAR} @」文件仍然將中間的$ @視爲變量。 – mskew

0
sed -i 's#^variable = .*#variable = http://myaddress#'