Finden Sie & Text in mehreren Dokumenten ersetzen über die Befehlszeile

Anonim

Wenn Sie mit der Befehlszeile vertraut sind und sich jemals in einer Situation befinden, in der Sie ein Wort, einen Satz, eine URL oder ein Zeichen in einer Gruppe von mehreren Textdokumenten finden und ersetzen müssen, erledigt Perl die Arbeit recht gut. Eine einfache Befehlszeichenfolge führt sehr schnell ein Gruppen-Batch-Suchen und -Ersetzen für Text durch, unabhängig davon, ob es sich um ein einzelnes Dokument oder um eine Gruppe mehrerer Dokumente handelt.

Wie bei vielen Dingen in der Befehlszeile gibt es keinen Bestätigungsprozess, daher sollten Sie sicherstellen, dass Ihre Syntax richtig eingestellt ist, bevor Sie einen Befehl einleiten, andernfalls müssen Sie möglicherweise ein weiteres Suchen und Ersetzen durchführen um Ihren Tippfehler zu reparieren.

Die grundlegende Befehlssyntax lautet wie folgt: perl -pi -w -e 's/THIS/THAT/g;' /Pfad/zu/Dateien.txt

Für ein Einzelwortbeispiel, wenn Sie in jeder .txt-Datei alle Instanzen von „ogre“ durch „cornbread“ ersetzen müssen innerhalb des Ordners „Dokumente“, dann würden Sie den folgenden Befehl verwenden:

perl -pi -w -e 's/ogre/cornbread/g;' ~/Dokumente/.txt

Als Beispiel für das Suchen und Ersetzen eines ganzen Satzes nehmen wir an, wir ersetzen den ganzen Satz „Die Schokoladenfabrik ” mit „The Wizard of Oz“ in einer Gruppe von .txt-Dateien, beginnend mit „Films“, gespeichert im Documents-Verzeichnis:

perl -pi -w -e 's/Die Schokoladenfabrik/Der Zauberer von Oz/g;' ~/Dokumente/Filme.txt

Das Suchen und Ersetzen wird sofort ausgeführt. Sie können die Änderung überprüfen, indem Sie cat und grep verwenden, um Folgendes zu überprüfen:

"

cat ~/Documents/Films124.txt |grep Zauberer von Oz"

Zugegeben, dies ist ziemlich fortgeschritten, und ja, das Stapelsuchen und -ersetzen durch mehrere Dokumente kann benutzerfreundlicher durch GUI-Apps wie TextWrangler und BBEdit durchgeführt werden, aber manchmal ist die Befehlszeile einfach schneller für schnelle Aufgaben wie diese und andere, die ähnlich sind, und es sind keine zusätzlichen Downloads erforderlich.

Ein großes Lob an Lifehacker für den hervorragenden Trick.

Update: Der Befehl „sed“ ist eine weitere Möglichkeit zum schnellen Suchen und Ersetzen über die Befehlszeile. Das Abdecken von sed ist meistens ein Thema für einen anderen Artikel, aber die grundlegende Syntax der Verwendung von sed für diese Aufgabe ist etwas einfacher und daher leichter zu merken:

sed -i 's/THIS/THAT/g' /Pfad/zu/Dateien.txt

Es gibt keinen richtigen oder falschen Weg, ob Sie also Perl oder Sed verwenden, ist eine Frage Ihrer persönlichen Präferenz.

Finden Sie & Text in mehreren Dokumenten ersetzen über die Befehlszeile