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

Использование терминала для пакетного поиска и замены нескольких файлов

Если вам удобна командная строка и когда-либо возникала ситуация, когда вам нужно найти и заменить слово, фразу, URL-адрес или символ в группе из нескольких текстовых документов, Perl справится с этой задачей довольно хорошо. Простая командная строка очень быстро выполняет групповой пакетный поиск и замену текста, будь то в одном документе или в группе из нескольких документов.

Как и во многих других вещах в командной строке, здесь нет процесса подтверждения, поэтому вам нужно убедиться, что ваш синтаксис задан правильно, прежде чем запускать команду, иначе вам может потребоваться выполнить еще один поиск и замену, чтобы исправить опечатку.

Основной синтаксис команды следующий:

perl -pi -w -e 's/THIS/THAT/g;' /path/to/files*.txt

Для пример одного слова, если вам нужно заменить все экземпляры «ogre» на «cornbread» в каждом файле .txt в папке «Documents», тогда вы должны использовать следующую команду:

perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/*.txt

Для пример поиска и замены целой фразы, предположим, что мы собираемся заменить все предложение «Шоколадная фабрика» на «Волшебник из страны Оз» в группе файлов .txt, начиная с «Фильмы», хранящихся в каталоге документов:

perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films*.txt

Поиск и замена выполняются немедленно. Вы можете дважды проверить изменение, используя cat и grep для проверки:

cat ~/Documents/Films124.txt |grep "Wizard of Oz"

По общему признанию, это довольно продвинуто, и да, пакетный поиск и замену в нескольких документах может быть выполнен более удобным для пользователя способом с помощью приложений с графическим интерфейсом, таких как TextWrangler и BBEdit, но иногда командная строка просто быстрее для быстрых задач, подобных этой и других, которые похожи, плюс не требует дополнительных загрузок для использования.

Большой палец вверх до Лайфхакер за отличный трюк.

Обновить: Команда ‘sed’ — еще один способ быстрого поиска и замены через командную строку. Обсуждение sed — это в основном тема для другой статьи, но основной синтаксис использования sed для этой задачи немного проще и, следовательно, его легче запомнить:

sed -i 's/THIS/THAT/g' /path/to/files*.txt

Не существует правильного или неправильного пути, поэтому, используете ли вы perl или sed, это вопрос личных предпочтений.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.