Я хочу, чтобы запустить поиск и замену, и я пытаюсь следующая команда:параметра 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;
здесь? обрабатывается буквально. Также [!;] Соответствует одному из этих двух символов, если вы хотите совместить символ, который не является; затем [^;]. Также отсутствуют одиночные кавычки (или двойные) в выражении sed. Я предлагаю ввести текстовую строку ввода/вывода – josifoski
@josifoski, как я могу избежать '?', Рассматриваемого как литерал? Я обменяю отрицание – ComputerLocus
, используя gnu sed с -r, затем? если это необходимо, будет общим стандартом – josifoski