2016-12-27 1 views
1

имеет файл config.php, который содержит что-то вроде этого.

<?php 
$main="dev.digin.io"; 

Что мне нужно сделать, это, независимо от значения строки, которые содержат после $main= нужно заменить с содержанием в переменной оболочки, как $MainDomain.

Окончательный config.php должен быть таким. (Рассмотреть Баш переменной оболочки состоят некоторые это как $ MainDomain = prod.mail.com)

<?php 
$main="prod.mail.com"; 

ответ

0

Этот неприятный вид СЕПГ замена получает вас, что вы хотите:

$ MainDomain=prod.mail.com 
$ sed -E "s/^(\\\$main=\")[^\"]+(\";)$/\1$MainDomain\2/" config.php 
<?php 
$main="prod.mail.com"; 

Добавить переключатель -i редактировать файл «на месте». Используйте -i.bak для создания файла резервной копии config.php.bak.

Похоже, что лучше всего в этой ситуации было бы использовать файл конфигурации и настроить ваш PHP-код для чтения, поскольку изменение исходного кода, как это, является рискованным бизнесом.

+0

Я устал 'sed -i 's/^ (\\\ $ mainDomain = \") [^ \ "] + (\";) $/\ 1 $ MainDomain \ 2/"/ var/www/html/include/config.php' он печатает ниже в командной строке. Любая идея? ** sed: -e выражение # 1, char 49: неверная ссылка \ 2 на 's 'команда RHS ** – Daz

+0

Вы' не используйте переключатель '-E', что означает, что группы захвата должны быть экранированы. Добавьте переключатель' -E'. Кроме того, вы действительно должны использовать суффикс резервного копирования с '-i', особенно при тестировании. –

+0

Затем он будет печатать правильный вывод из консоли, но не изменять файл. Любая идея? – Daz

0

@Daz, могли бы вы попробовать следующее и дайте мне знать, если это поможет.

awk -vVAR="$MainDomain" '/\$mainDomain/{sub(/=.*/,"="VAR,$0);} 1' Input_file 

Где -vVAR = "$ MainDomain" VAR является переменной AWK, который имеет переменную оболочки с именем значение MainDomain в нем. В awk мы не можем напрямую изменять значения переменных, поэтому мы можем назначить его переменной awk и использовать ее в ней.

Дайте мне знать, если у вас есть вопросы по этому вопросу.

Смежные вопросы