Предпочтительно, если это возможно, инструменты.
Кроме того, возможность поиска нескольких регулярных выражений и каждой замены различными строками будет бонусом.
Предпочтительно, если это возможно, инструменты.
Кроме того, возможность поиска нескольких регулярных выражений и каждой замены различными строками будет бонусом.
Perl. Серьезно, это делает sysadmin вещи намного проще. Вот пример:
perl -pi -e 's/something/somethingelse/g' *.log
sed быстро и просто:
sed -e "s/pattern/result/" <file list>
вы также можете присоединиться к нему с помощью find:
find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"
Textpad хорошо справляется с этим в Windows. И это очень хороший редактор.
Неудивительно, что Perl отлично справляется с этим, в сочетании с достойной оболочкой:
for file in @filelist ; do
perl -p -i -e "s/pattern/result/g" $file
done
Это имеет тот же эффект (но более эффективен и без условия гонки):
for file in @filelist ; do
cat $file | sed "s/pattern/result/" > /tmp/newfile
mv /tmp/newfile $file
done
Редактор каталога Emacs имеет функцию `dired-do-query-replace-regexp 'для поиска и замены регулярного выражения по набору отмеченных файлов.
Я написал бесплатный инструмент командной строки для Windows, чтобы сделать это. Он называется rxrepl, он поддерживает поиск в формате unicode и файл. Некоторые из них могут оказаться полезными.
В Windows мне нравилось WinGrep
В Ubuntu я использую Regexxer.
Для Mac OS X TextWrangler выполняет эту работу.
Для поиска и замены в нескольких файлах в Windows я нашел rxFind, чтобы быть очень полезным.
Мой личный фаворит - PowerGrep от JGSoft. Он взаимодействует с RegexBuddy, который может помочь вам создать и протестировать регулярное выражение, автоматически поддерживать все изменения (и предоставляет возможности отмены), предоставляет возможность анализировать несколько каталогов (с шаблонами имен файлов) и даже поддерживает такие форматы файлов, как Microsoft Word, Excel и PDF.
Я бы пошел за bash + find + sed.
Вим для спасения (и президент;-)). Попробуйте:
vim -c "argdo! s:foo:bar:gci" <list_of_files>
(Я действительно люблю переключатель Vim -c, это волшебство. Или если вы уже в Vim и открыли файлы, например:
vim <list_of_files>
Только проблема:
:bufdo! s:foo:bar:gci
Конечно, sed
и perl
также способны.
НТН.
У меня есть роскошь Unix и Ubuntu; В обоих случаях я использую gawk для всего, что требует по очереди поиска и замены, особенно для строк за строкой подстроки. В последнее время это было самым быстрым для обработки 1100 изменений в миллионах строк в сотнях файлов (один каталог) На Ubuntu я являюсь поклонником regexxer
sudo apt-get install regexxer
В Windows есть бесплатная альтернатива, которая работает лучше всего: Notepad ++
Перейдите в раздел "Поиск" → "Найти файлы". Можно указать каталог, шаблон файла, установить регулярные выражения, затем просмотреть совпадения и, наконец, рекурсивно заменить все файлы.
Мне нравится этот инструмент:
Дает вам "как вы печатаете" предварительный просмотр своего регулярного выражения... FANTASTIC для тех, кто не очень разбирается в RE... и очень быстро меняет сотни или тысячи файлов за раз...
И затем дайте UNDO свои изменения также...
Очень приятно...
Патрик Стейл - http://www.podiotools.com
Если "текстовая панель" является допустимым ответом, я бы предложил Sublime Text спуститься вниз.
Редактирование нескольких курсоров - еще более эффективный способ сделать замены в целом, которые я нахожу, но его "" Найти в файлах "" - это верхний уровень для замены объемного регулярного выражения/обычного поиска.
jEdit regex search & замена в файлах довольно приличная. Тем не менее, слегка переборщить, если вы используете его только для этого. Он также не поддерживает переменную, которую вы запросили.
Я нашел инструмент RxFind полезный (бесплатный OSS).
Brackets (исходный код, deb/Ubuntu, OSx и Windows) имеет хорошую визуализацию результатов, позволяя их индивидуально применять замена. Вы можете искать по стандартным текстам, чувствительным к регистру или нет, и регулярным выражением. Очень важно: вы можете исключить шаблоны файлов и каталогов в поиске.