2016-11-21 96 views
0

只是試圖寫一個腳本來做一個簡單的正則表達式在php.ini中替換,我想要做的就是用cgi.fix_pathinfo=0替換;cgi.fix_pathinfo=1行。簡單的SED替換

理想情況下,要避免安裝任何額外的軟件包,所以sed似乎是一個合理的選擇,因爲它與FreeBSD捆綁在一起。我曾嘗試以下,但似乎並沒有工作:

sed 's/;cgi\.fix_pathinfo=1/cgi\.fix_pathinfo=0/' /usr/local/etc/php.ini 
+2

'但似乎並沒有工作:'你可以添加詳細的問題是什麼?可能只是創建一個帶有樣本輸入的文件並粘貼你得到的輸出? – Sundeep

+0

你似乎不需要在點之前使用轉義符號,使用'cgi.fix_pathinfo = 0'(這是替換模式,而不是正則表達式搜索模式) –

+0

@Sundeep抱歉可能已經更清楚了,文件沒有任何反應,它保持不變。 – FireLeopard

回答

3

要與SED BSD更改文件的內容的地方,你可以這樣做:

sed -i.bak -e 's/;cgi\.fix_pathinfo=1/cgi.fix_pathinfo=0/;' /usr/local/etc/php.ini 

,創建了一個副本帶有.bak擴展名的舊文件。

或者不創建副本:

sed -i '' -e 's/;cgi\.fix_pathinfo=1/cgi.fix_pathinfo=0/;' /usr/local/etc/php.ini 

注意,在這種情況下,一個空格和引號引起的空字符串是強制性的。你不能像GNU sed一樣簡單地寫sed -i -e '...