2014-09-09 3 views
0

Я хочу, чтобы заменитьКак заменить этот текст кавычками?

$rcmail_config['default_host'] = ''; 

в /var/lib/roundcube/config/main.inc.php

с

$rcmail_config['default_host'] = 'localhost'; 

Я пробовал:

sed -i "s/$rcmail_config['default_host'] = '';/$rcmail_config['default_host'] = 'localhost';/g" /var/lib/roundcube/config/main.inc.php 

и

sed -i s/$rcmail_config['default_host'] = '';/$rcmail_config['default_host'] = 'localhost';/g /var/lib/roundcube/config/main.inc.php 

Но это не работает.

Что я могу попробовать дальше?

ответ

2

Вам необходимо избегать символов $ и [, а также вам не нужно повторять ту же строку в заменяемой части. Вместо этого вы можете использовать группы захвата.

sed -i "s/\(\$rcmail_config\['default_host'\] = \)'';/\1'localhost';/g" file 
+0

Спасибо, это сработало. Вопрос: почему символы '' '' '' '' '' символов должны быть экранированы? – narzero

+2

@narzero в regex '$' означает конец строки, а '[' рассматривается как начало класса символов. Вам нужно избежать обоих, чтобы он соответствовал буквальным символам '' '' '' '. –

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