Как найти и заменить несколько строк текста соответствующим текстом?

У меня есть несколько файлов и набор текстовых комбинаций для поиска и замены.

Например, у меня есть набор для поиска текста и замены текста следующим образом:

  • find - "margin" заменить на "new_margin"
  • find - " color "заменить на" color_primary "
  • найти -" xxx "заменить на" zzzz "
  • найти -" rre "заменить на" 768 "

У меня есть около 100 таких комбинаций, мне нужно найти все «найти тексты» и заменить его соответствующим текстом замены.

Как я могу сделать это легко?

Есть ли инструмент для этого?

0
задан 9 May 2019 в 08:50

1 ответ

для замены текстом в файлах в единственном выстреле, можно использовать sed:

sed -i -e 's@margin@new_margin' -e 's@color@color_primary@' -e 's@xxx@zzz@' -e '@rre@768@' /path/to/files/*

- я опция говорю sed для выполнения модификации в файле без печати

- e говорят sed, имеют больше строки, чтобы быть, находят и замененный

В s@ говорится, разделитель для string_to_find и replacement_string

последним является путь, где файл, если они - все в одном месте, можно выполнить эту команду однажды.

!!! Выполните резервное копирование своего файла ВСЕГДА, прежде чем сделают модификацию с sed в файле непосредственно!!!

ОБНОВЛЕНИЕ

Благодаря @steeldriver, который говорит в комментарии для не изменения исходного файла с sed добавление суффикса к-i опциям

- я [СУФФИКС], - оперативный [=SUFFIX]

Т.Е.

sed -i_edited 's@margin@new_margin' /path/to/files/examplefile

закончится с новым файлом, измененным названный examplefile_edited

1
ответ дан 9 May 2019 в 08:50

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

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