Содержание

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

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


Задача:

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

Решение:

замена внутри одного файла:

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"

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

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

Ссылки:


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