замена строки в нескольких файлах

Я пользуюсь существующим вопросом - я не уверен, как добавить это к этому вопросу. Примеры, которые я вижу, заменяют одну строку - мне нужно заменить несколько строк.

Я пытаюсь изменить одну и ту же строку, которая существует в нескольких файлах в каталоге, используя 'sed'. Строка состоит из нескольких слов. Шаблон, который я использую:

sed -i 's/oldstring/newstring/g' test.txt

Я хочу изменить количество файлов в одном каталоге, т.е. изменить строку:

&VARIABLE1 = 10000000

на

&VARIABLE = 1

Когда я использую следующее

sed -i 's/&VARIABLE1 = 10000000/&VARIABLE = 1/g' *.txt

Это не делает замену должным образом.

Что я делаю не так?

1
задан 4 May 2018 в 16:23

1 ответ

& символ имеет особое значение на заменяющей стороне 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
2
ответ дан 7 December 2019 в 13:24

Другие вопросы по тегам:

Похожие вопросы: