2015-04-16 50 views
3

在我的php.ini我有桑達正則表達式命令替換

error_reporting = E_ALL 

我想用sed命令改回

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 

sed -i "s/^error_reporting = .*/error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT/" /etc/php5/apache2/php.ini 

我得到一個不同的結果:

error_reporting = E_ALL error_reporting = E_ALL ~E_DEPRECATED error_reporting = E_ALL ~E_STRICT 

,但它應該是

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 

BTW,sed命令是一個bash腳本。

回答

10

&在sed s命令的替換條款中有特殊含義;它被替換爲匹配的字符串。你必須逃避它:

sed -i 's/^error_reporting = .*/error_reporting = E_ALL \& ~E_DEPRECATED \& ~E_STRICT/' /etc/php5/apache2/php.ini 
+0

你是一個活的保護者 – Iori