2015-06-08 2 views
1

Я хочу, чтобы запустить поиск и замену, и я пытаюсь следующая команда:параметра Sed получения заменить обратный слэш

sed -i "s/\$enviro ?=.*[^;]/ = 1;/g" constants.php 

По какой-то причине, когда я пытаюсь запустить это превращается в:

sed -i "s/\$enviro\ \?=.\*\[\^\;\]/\ =\ 1\;/g\" constants.php 

Это тогда дает ошибку:

sed: -e expression #1, char 28: unknown option to `s' 

Я просто хочу, чтобы запустить регулярное выражение \$enviro ?=.*[!;] и заменить его с $enviro = 1;.

вход - большой файл конфигурации, одна из линий являются:

 $enviro = 0; 

Выход - еще большой конфигурационный файл:

$enviro = 1; 
+0

здесь? обрабатывается буквально. Также [!;] Соответствует одному из этих двух символов, если вы хотите совместить символ, который не является; затем [^;]. Также отсутствуют одиночные кавычки (или двойные) в выражении sed. Я предлагаю ввести текстовую строку ввода/вывода – josifoski

+0

@josifoski, как я могу избежать '?', Рассматриваемого как литерал? Я обменяю отрицание – ComputerLocus

+0

, используя gnu sed с -r, затем? если это необходимо, будет общим стандартом – josifoski

ответ

1

Вы можете попробовать это гну СЭД

sed -i -r 's/(\$enviro *= *)[^;]*/\1 1/' file 
1

Вы можете использовать эту команду sed:

sed -i.bak 's/\(\$enviro *=\).*/\1 1;/' constants.php 
Смежные вопросы