HowTo: Textersetzung in mehreren Dateien mit Perl (preg) unter Windows und Linux
Neulich stellte sich mir folgendes Problem:
Ich hatte viele Dateien, in denen ich Text ersetzen wollte. Mit einem normalen Editor ist dies schlecht möglich. Abhilfe schafft der Perl Interpreter:
View Code BASH
1 2 3 4 5 6 7 8 | perl -pi -w -e 's/search/replace/g;' *.html -e Argument ausführen (execute) -i "in-place" editieren -w Warnungen ausgeben -p "loop" siehe auch perl -h |
Beispiel Datum 1
Es soll das Datum von 2008 auf 2009 in allen html-Dateien im aktuellen Verzeichnis aktualisiert werden:
View Code BASH
1 | perl -pi -w -e 's/2008/2009/g;' *.html |
Beispiel Datum 2
Es soll das Datum von 200x auf 2009 in allen html-Dateien im aktuellen Verzeichnis aktualisiert werden:
View Code BASH
1 | perl -pi -w -e 's/200[0-8]/2009/g;' *.html |
Beispiel: Verzeichnisse rekursiv durchsuchen (nur Linux)
View Code BASH
1 2 3 4 5 | find * | grep -E "\.html$" | xargs perl -pi -w -e 's/search/replace/g;' find * gibt alle Dateien und Verzeichnisse aus grep -E "\.html$" selektiert nur Dateinamen, die auf .html enden xargs gibt die Dateinamen als Parameter an Perl weiter |