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

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

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

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

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

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

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

1 ответ

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

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

-i вариант сказать Sed, чтобы выполнить изменение в файле без печати

- скажем, у sed есть больше строк, которые нужно найти и заменить

s@ говорит, что '@' является разделителем для string_to_find и replace_string

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

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

ОБНОВИТЬ

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

-i [SUFFIX], --in-place [= SUFFIX]

IE

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

приведет к изменению нового файла с именем examplefile_edited

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