Как найти и заменить несколько строк текста на соответствующий текст?
У меня есть количество файлов и набор текстовых комбинаций для поиска и замены.
Например, у меня есть набор для поиска текста и замены текста, как это,
- 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