2016-11-21 17 views
0

php.iniで単純な正規表現置換を行うスクリプトを作成しようとすると、;cgi.fix_pathinfo=1cgi.fix_pathinfo=0に置き換えるだけです。シンプルSED置き換え

FreeBSDにバンドルされているので、sedが論理的な選択と思われるように、追加のパッケージをインストールするのは理想的です。のコピーを作成すること

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

:私は次のことを試してみましたが、動作していないよう:

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での場所にファイルの内容を変更するには、あなたがそれを行うことができます拡張子が.bakの古いファイル。

またはコピーを作成せず:

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

(注)この場合には、引用符の間に囲まれた空間と、空の文字列が必須であることを。 GNU sedのように、単にsed -i -e '...と書くことはできません。

関連する問題