Массовая замена текста или как работать с большого размера файлами

Недавно столкнулся с проблемой замены текста в дампе базы данных размером в 4Gb.. Перепробывал порядка 20 редакторов и утилит которые обещали это сделать — результат «нехватка памяти» и просто зависание (на компьютере установлено 2Gb RAM).

Решением было — использование perl на сервере с Unix где база данных и дампилась!

  • замена внутри одного файла:
perl -w -i -p -e "s/search_text/replace_text/g" filename
  • замена сразу в нескольких файлах:
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"

Источник: Colobridge

Опыт