Я пользуюсь существующим вопросом - я не уверен, как добавить это к этому вопросу. Примеры, которые я вижу, заменяют одну строку - мне нужно заменить несколько строк.
Я пытаюсь изменить одну и ту же строку, которая существует в нескольких файлах в каталоге, используя 'sed'. Строка состоит из нескольких слов. Шаблон, который я использую:
sed -i 's/oldstring/newstring/g' test.txt
Я хочу изменить количество файлов в одном каталоге, т.е. изменить строку:
&VARIABLE1 = 10000000
на
&VARIABLE = 1
Когда я использую следующее
sed -i 's/&VARIABLE1 = 10000000/&VARIABLE = 1/g' *.txt
Это не делает замену должным образом.
Что я делаю не так?
&
символ имеет особое значение на заменяющей стороне sed s
команда:
replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
Для создания этого литеральным необходимо выйти из него, \&
Напр.
$ echo '&VARIABLE1 = 10000000' | sed 's/&VARIABLE1 = 10000000/&VARIABLE = 1/g'
&VARIABLE1 = 10000000VARIABLE = 1
но
$ echo '&VARIABLE1 = 10000000' | sed 's/&VARIABLE1 = 10000000/\&VARIABLE = 1/g'
&VARIABLE = 1