2016-11-21 94 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 '...