Was ist das beste Werkzeug, reguläre Ausdrücke über mehrere Dateien zu finden und zu ersetzen?

StackOverflow https://stackoverflow.com/questions/102083

  •  01-07-2019
  •  | 
  •  

Frage

Vorzugsweise kostenlose Tools, wenn möglich.

Auch die Option für mehrere reguläre Ausdrücke zu suchen, und die jeweils mit unterschiedlichen Zeichenketten zu ersetzen wäre ein Bonus.

War es hilfreich?

Lösung

Perl. Im Ernst, es macht Sysadmin Zeug so viel einfacher. Hier ein Beispiel:

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

Andere Tipps

sed ist schnell und einfach:

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

Sie können es auch mit find verbinden:

find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"

Textpad macht einen guten Job davon unter Windows. Und es ist ein sehr guter Editor als auch.

Ich habe ein kostenloses Kommandozeilen-Tool für Windows geschrieben, dies zu tun. Es heißt rxrepl , unterstützt Unicode und Dateisuche. Manche finden es nützlich.

Es überrascht nicht, hat Perl eine gute Arbeit des Umgangs mit diesem in Verbindung mit einer guten Schale:

for file in @filelist ; do
  perl -p -i -e "s/pattern/result/g" $file
done

Dies hat den gleichen Effekt (aber ist effizienter und ohne die Race-Bedingung), wie:

for file in @filelist ; do
  cat $file | sed "s/pattern/result/" > /tmp/newfile
  mv /tmp/newfile $file
done

Emacs Verzeichnis-Editor hat die `dired-do-query-replace-regexp‘ Funktion zu suchen und einen regulären Ausdruck über einen Satz von markierten Dateien zu ersetzen.

Unter Windows Früher habe ich gerne WinGrep

Unter Ubuntu, verwende ich regexxer.

Für finden und Ersetzen auf mehrere Dateien auf Windows fand ich rxFind sehr hilfreich sein.

Für Mac OS X, tut TextWrangler den Job.

Mein persönlicher Favorit ist PowerGREP von JGSoft. Er ist mit der RegexBuddy die Ihnen helfen können, den regulären Ausdruck zu erstellen und zu testen, werden automatisch alle Änderungen sichert (und bietet rückgängig machen Fähigkeiten), bietet die Möglichkeit, mehrere Verzeichnisse (mit Dateinamen-Muster), zu analysieren und sogar Dateiformate wie Microsoft Word, Excel und PDF.

unterstützt

PowerGREP Screenshot

ich für bash gehen würde + + sed finden.

Vim für die Rettung (und Präsidenten ;-)). Versuchen Sie:

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

(ich liebe Vims -c, es ist Magie. Oder wenn Sie bereits in Vim und öffneten die Dateien, z.

vim <list_of_files>

Nur Ausgabe:

:bufdo! s:foo:bar:gci

Natürlich sed und perl ist auch fähig. HTH.

Ich habe den Luxus von Unix und Ubuntu; In den beiden, ich benutze gaffen für alles, was line-by-line erfordert Suchen und Ersetzen, insbesondere für Zeile-für-Zeile für substring (s). Vor kurzem war dies die schnellste für die Verarbeitung 1100 Veränderungen gegenüber Millionen von Zeilen in Hunderten von Dateien (ein Verzeichnis) Auf Ubuntu bin ich ein Fan von regexxer

 sudo apt-get install regexxer

In Windows gibt es kostenlose Alternative, die das am besten funktionieren: Notepad ++

Gehen Sie auf "Suchen" -> "In Dateien suchen". Man kann geben Verzeichnis, Dateimuster, setzen Sie reguläre Ausdrücke dann die Spiele-Vorschau und ersetzen schließlich alle Dateien rekursiv.

Ich liebe dieses Tool:

http://www.abareplace.com/

Gibt Ihnen ein „während des Tippens“ Vorschau Ihrer regulären Ausdruck ... FANTASTIC für diejenigen, die nicht gut in REs versiert ... und es ist super schnell zu Hunderten oder Tausenden von Dateien auf einmal zu ändern ...

Und dann können Sie UNDO Änderungen als auch ...

Sehr schön ...

Patrick Steil - http://www.podiotools.com

Wenn 'textpad' eine gültige Antwort ist, würde ich vorschlagen, Sublime Text Hände nach unten.

Multi-Cursor Änderungen sind eine noch effizientere Art und Weise Ersatz zu machen im Allgemeinen finde ich, aber sein „ suchen in Dateien “Top-Tier für Bulk-regex ist / plain Ersatz finden.

jEdit 's regex Suche & in Dateien ersetzen ist ziemlich anständig. Etwas übertrieben, wenn man es nur dafür verwenden, though. Es ist auch nicht unterstützt die Multi-Ausdruck-ersetzen Sie gefragt.

Ich habe das Tool RxFind nützlich (kostenlos OSS).

gefunden

Brackets (Quellcode, deb / Ubuntu, OS X und Windows) hat eine gute Visualisierung der Ergebnisse, so dass sie einzeln erlauben wählen anzuwenden Substitution. Sie können durch Standardtext, Groß- und Kleinschreibung oder nicht, und regex suchen. Sehr wichtig:. Sie Muster von Dateien und Verzeichnissen in der Suche ausschließen

Für mindestens 25 Jahre, ich habe Emacs benutze für Groß Ersatz für eine große Anzahl von Dateien. Führen Sie etags eine beliebige Menge von Dateien angeben durchsuchen:

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

Dann öffnen Emacs und läuft tags-query-replace, die für regex und Ersatz aufgefordert:

\b\(foo\)\b
\1bar
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top