Colobridge WIKI

массовая замена текста

Применимость: Linux


Что делать если нужно заменить текст в большом количестве файлов

perl -w -i -p -e "s/search_text/replace_text/g" filename

Пояснения:

  • -w включает вывод предупреждений
  • -i режим внесения моментальных изменений в файл (in-place) (если вы хотите сделать бек-апы, используйте ключ так: -i.bak, это сохранит старый файл в виде filename.bak )
  • -p циклически обрабатывает все, что подано на вход
  • -e задает выражение Perl
perl -w -i -p -e "s/search_text/replace_text/g" *.php

Если нужно пройтись по всему каталогу и подкаталогам и заменить во всех встречающихся на пути php-файлах строку «Perl is great» на «Perl is fucking awesome». Не проблема, командуем в терминал:

find /www_root -name "*.php"|xargs \
perl -w -i -p -e "s/Perl is great/Perl is fucking awesome/g"

Команда find будет рекурсивно просматривать подкаталоги /www, отсеивать файлы, имеющие расширение .php , затем xargs примет имя файла и передаст его perl-у в виде аргумента

Обратите внимание, аргументы Perl-у запомнить легко: -w -i -p -e получается wipe (по английски – «стереть» что-л.) Для лучшего понимания полезно почитать man по команде xargs


Актуальность: 2011/05/12 10:10