2016-11-21 5 views
0

Просто попробуйте написать скрипт, чтобы заменить обычное регулярное выражение в php.ini, что я хочу сделать, это заменить строку ;cgi.fix_pathinfo=1 на cgi.fix_pathinfo=0.simple SED replace

В идеале, избегайте установки каких-либо дополнительных пакетов, поэтому 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 

Обратите внимание, что в этом случае пространство и пустая строка, заключенная в кавычки, являются обязательными. Вы не можете просто написать sed -i -e '... как с GNU sed.