Вопрос по regex, replace, search – Какой лучший инструмент для поиска и замены регулярных выражений в нескольких файлах?

25

Желательно бесплатные инструменты, если это возможно.

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

Это должно быть перенесено в SoftwareRecs.SE Ben Leggiero

Ваш Ответ

18   ответов
4

'для поиска и замены регулярных выражений в наборе отмеченных файлов.

3

RxFind чтобы быть очень полезным.

RxНайдите сейчас здесь: Github.com / Калахари / RxFind / релизы John N
2

PowerGREP от JGSoft. Это взаимодействует с RegexBuddy, который может помочь вам создать и проверить регулярное выражение, автоматически создает резервные копии всех изменений (и предоставляет возможности отмены), предоставляет возможность анализа нескольких каталогов (с шаблонами имен файлов) и даже поддерживает такие форматы файлов, как Microsoft Word, Excel, и PDF.

1

Notepad ++

Перейти к «Поиск» -> «Найти в файлах». Можно указать каталог, шаблон файла, установить регулярные выражения, затем просмотреть совпадения и, наконец, рекурсивно заменить все файлы.

5

чтобы сделать это. Это называется Rxrepl, поддерживает юникод и поиск файлов. Некоторые могут найти это полезным.

34

perl -pi -e 's/something/somethingelse/g' *.log

Расширением этого будет использование egrep, пример:perl -pi -e 's/something/somethingelse/g'`egrep -ril "something" ./` Andre Helberg
Как это сделать с помощьюrg а такжеxargs? Purplejacket
Как примечание, флаги:p: печать, для каждой строки,i: редактировать файл в строке,e: выполнить команду, заданную в командной строке brian
23

sed это быстро и просто:

sed -e "s/pattern/result/" <file list>

Вы также можете присоединиться к нему с помощью find:

find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"
Я согласен на быстрое .... и это легко только для данного значения легко. В любом случае +1;) Mario Ortegón
Да, но проблемы начинаются, когда приходится вставлять HTML-код длиной 10 строк с точками, косыми чертами, кавычками и т. Д. В несколько файлов. alekwisnia
Это не обновляет файлы, а просто выводит их.-i аргумент, кажется, чтобы исправить это. Смотрите также Stackoverflow.com / вопросы / 10445934 / множественные-файлы с изменением Thomas Ahle
3

WinGrep

Под Ubuntu я использую Regexxer.

WinGrep больше не доступен. Теперь вы можете использовать Grepwin вместо. DanielTuzes
5

Textpad хорошо справляется с этой задачей в Windows. И это очень хороший редактор.

Да, это так. Что вам нужно сделать, это щелкнуть правой кнопкой мыши и выбрать «Открыть все» в результатах поиска. Это откроет все найденные файлы. Затем в диалоговом окне «Заменить» установите переключатель «Все документы», чтобы указать место замены. После завершения нажмите «Сохранить все». levik
Blimy - никогда не знал, что - ура. Umber Ferrule
Не могу согласиться с тем, что TextPad - отличный редактор (мой личный фаворит). Однако, хотя он выполняет поиск по нескольким файлам (и при этом очень быстро), он не выполняет поиск и замену по нескольким файлам. Umber Ferrule
4

что 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
Мне также нравится использовать "find -iname" с этим, чтобы получить рекурсивный поиск. Osama Al-Maadeed
1

-)). Пытаться

vim -c "argdo! s:foo:bar:gci" <list_of_files>

(Мне нравится ключ -c в Vim, это волшебство. Или, если вы уже работали в Vim и открыли файлы, например :

vim <list_of_files>

Просто проблема:

:bufdo! s:foo:bar:gci

Конечноsed а такжеperl тоже способен. НТН.

1

В обоих я использую Простак для всего, что требует построчного поиска и замены, особенно построчно для подстроки. В последнее время это был самый быстрый способ обработки 1100 изменений для миллионов строк в сотнях файлов (один каталог). В Ubuntu я фанат regexxer

 sudo apt-get install regexxer
1

Sublime Text руки вниз

Многокурсное редактирование - это еще более эффективный способ сделать замены, как мне кажется, но его " Найти в файлах "- это верхний уровень для массовых замен регулярных выражени

1

http: //www.abareplace.com

Дает вам предварительный просмотр вашего регулярного выражения "по мере ввода" ... FANTASTIC для тех, кто плохо разбирается в RE ... и он очень быстр в изменении сотен или тысяч файлов одновременно ...

А теперь давай отменим твои изменения ...

Очень хорошо..

Патрик Стейл -http: //www.podiotools.co

0

JEditегулярное поиск и замена @ в файлах довольно приличный. Немного излишним, если вы используете его только для этого. Он также не поддерживает запрашиваемую замену нескольких выражений.

0

RxFind полезно (бесплатный OSS).

0

Скобк (исходный код, deb / Ubuntu, OSx и Windows) имеет хорошую визуализацию результатов, позволяя выбирать их по отдельности для применения подстановки. Вы можете искать по стандартному тексту, с учетом регистра или нет, и регулярное выражение. Очень важно: вы можете исключить шаблоны файлов и каталогов из поиска.

0

ого количества файлов. Бегetags чтобы указать любой набор файлов для поиска:

$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md

Тогда открой Emacs и запустиtags-query-replace, который запрашивает регулярное выражение и замену:

\b\(foo\)\b
\1bar

Похожие вопросы