-1

Здравствуйте, я пытаюсь автоматизировать, например, изменить одну переменную в файле php.

root /tmp # cat defaults.inc.php|egrep "reply_all_mode"
$config['reply_all_mode'] = 0;

Я пытаюсь сначала поймать это с помощью grep что-то вроде этого:

root /tmp # cat defaults.inc.php|grep '$config['reply_all_mode'] = 0;'

но я не получаю никаких результатов ...

Я пытаюсь внести изменения $config['reply_all_mode'] = 0; $config['reply_all_mode'] = 1 ; с sed или perl.

как это сделать с такими персонажами?

1 ответ1

0

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

Я бы написал

sed 's/\(\$config\['\''reply_all_mode'\''\] = \)0;/\11;/' file

В скобках указывается до = , а \1 в части замещения копирует этот текст. Тогда 0; заменяется на 1;

Грязный '\'' заключается в том, что строки оболочки в одинарных кавычках не могут содержать строки в одинарных кавычках. Мы должны вырваться из строки в одинарных кавычках, чтобы добавить буквальную одинарную кавычку. Нам не нужно использовать одинарные кавычки, но тогда это еще хуже IMO:

sed "s/\\(\\\$config\\['reply_all_mode'\\] = \\)0;/\\11;/" file

Tidier прикосновения с Perl

perl -pe 's/\$config\['\'reply_all_mode'\''\] = \K0;/1;/' file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .