44 Stimmen

Mehrere Texte gleichzeitig ersetzen

Tutorial von Stefan Trost | 21.12.2022 um 14:54

Manchmal ist es nicht nur mit einer einzelnen Ersetzung getan und wir sind mit der Aufgabe konfrontiert, gleich mehrere Texte in Textdateien ersetzen zu müssen. Insbesondere wenn wir diese Ersetzungen an einer großen Anzahl von Dateien durchführen müssen, kann es sehr arbeitsaufwendig werden, jede Datei einzeln zu öffnen und die vielen Ersetzungen nacheinander durchzuführen.

Einfacher geht es mit dem TextKonverter, den wir in diesem Tutorial vorstellen möchten. Mit diesem Programm ist es möglich, eine beliebige Anzahl an Ersetzungen an einer beliebigen Anzahl von Textdateien gleichzeitig durchzuführen. In diesen Tutorial möchten wir uns die folgenden Fälle dazu ansehen:

In jedem dieser Fälle können wir alle Dateien, in denen wir die Ersetzungen durchführen möchten, einfach zur Bearbeitung aus einem beliebigen Ordner auf das Programmfenster des TextKonverters ziehen. Speichern können wir die Änderungen mit dem Button "Konvertieren und Speichern" unten rechts im Hauptfenster. Falls wir einen ungespeicherten Text bearbeiten möchten, können wir diesen auch einfach in das Feld "Text" kopieren und erhalten das Ergebnis im Feld "Vorschau".

Mehrere Texte durch mehrere verschiedene Texte ersetzen

Die Funktion zum Suchen und Ersetzen finden wir im TextKonverter auf der rechten Seite des Hauptfensters unter "Aktionen > Text > Ersetzen". In den Optionen dieser Aktion gibt es zwei Felder, ein Feld für den Suchtext und ein weiteres Feld für den Ersetzungstext.

Neben diesen Feldern interessieren uns die beiden Optionen "Jede Zeile ist ein eigener Suchtext" und "Jede Zeile ist eine eigene Ersetzung" unter den beiden Feldern. Wenn wir beide dieser Optionen aktivieren, können wir unkompliziert mehrere Ersetzungen gleichzeitig definieren.

Zum Beispiel könnten wir in das Feld "Suchen nach" folgenden Text schreiben:

a
b
c

Und in das Feld "Ersetzen durch" diesen Text:

x
y
z

Falls beide der genannten Optionen aktiviert sind führt diese Konfiguration dazu, dass jedes "a" durch ein "x" ersetzt wird, sowie jedes "b" durch ein "y" und jedes "c" durch ein "z".

Der Text in der ersten Zeile aus dem Suchen-Feld wird entsprechend mit dem Text aus der ersten Zeile aus dem Ersetzen-Feld ersetzt, der Text aus der zweiten Zeile des Such-Feldes mit dem Text aus der zweiten Zeile des Ersetzen-Feldes und so weiter. Wir können beliebig viele Zeilen definieren, sollten aber darauf achten, dass beide Felder gleich viele Zeilen haben. Außerdem sind die einzelnen Zeichen "a", "b" und "c" aus dem Beispiel natürlich nur exemplarisch. Wir können auch längere Zeichenketten inklusive Leerzeichen in jeder Zeile verwenden.

Hätten wir keine der beiden genannten Optionen aktiviert, würde der komplette mehrzeilige Suchtext durch den kompletten mehrzeiligen Ersetzungstext ersetzt. Eine Ersetzung würde demnach nur dann ausgeführt, wenn eine Zeile mit einem "a" endet, in der nächsten Zeile nur ein "b" steht und die darauf folgende Zeile mit einem "c" beginnt.

Mit der Option "Als regulären Ausdruck interpretieren" können wir darüber hinaus auch eine Serie von regulären Ausdrücken für unsere Ersetzungen gleichzeitig anwenden.

Natürlich funktioniert diese Art der Konfiguration nur mit einzeiligen Suchwörtern und einzeiligen Ersetzungen. Wie Sie auch mehrere mehrzeilige Texte ersetzen können, erfahren Sie im letzten Abschnitt dieses Tutorials.

Mehrere Texte durch den gleichen Text ersetzen

Um mehrere Texte durch mehrere verschiedene Texte zu ersetzen, haben wir beide Optionen "Jede Zeile ist ein eigener Suchtext" und "Jede Zeile ist eine eigene Ersetzung" aktiviert. Was aber passiert, falls wir nur eine dieser Optionen aktivieren und die andere Option nicht aktiv ist?

Falls wir nur die Option "Jede Zeile ist eine eigene Ersetzung" aktivieren, können wir mehrere Texte im Suchen-Feld definieren, die dann alle durch den gleichen Text aus dem Ersetzen-Feld ausgetauscht werden.

Wenn wir zum Beispiel folgenden Text in das Suchen-Feld eingeben...

a
b
c

...und diesen Text in das Ersetzen-Feld schreiben...

x

...werden alle Vorkommnisse von einem "a", einem "b" oder einem "c" in unserem Originaltext durch ein "x" ersetzt.

Wieder könnten wir natürlich auch in diesem Anwendungsfall mit regulären Ausdrücken arbeiten, beliebig viele Zeilen in das Suchen-Feld eintragen oder auch beliebigen anderen längeren Text in den Zeilen verwenden.

Einen Text durch mehrere Texte ersetzen

Natürlich geht es auch andersherum. Wenn wir in der Text-Ersetzen-Aktion nur die Option "Jede Zeile ist eine eigene Ersetzung" aktivieren während wir die Option "Jede Zeile ist ein eigener Suchtext" deaktiviert lassen können wir einen Text durch mehrere Texte ersetzen.

Nehmen wir an, dass wir den folgenden Text in das Suchen-Feld eingeben:

a

Und als Ersetzung die folgenden 3 Zeilen in das Ersetzen-Feld hineinschreiben:

x
y
z

In diesem Fall wird das erste Vorkommnis von "a" in unserem Originaltext durch die erste Zeile ersetzt, also durch "x". Das zweite Vorkommnis von "a" wird durch die nächste Zeile ersetzt, also durch "y". Und falls noch ein weiteres und demnach drittes "a" in dem Originaltext vorkommt, wird dieses durch das "z" in der dritten Zeile ersetzt.

Sollte ein viertes "a" in unserem Originaltext vorkommen, bleibt dieses als solches stehen, da wir keine vierte Zeile für eine weitere Ersetzung definiert haben. Das gilt auch für jedes weitere "a", dessen "Nummer" über die Anzahl der Zeilen hinausgeht.

Mehrere Mehrzeilige Texte ersetzen

Alle bisherigen Arten von Ersetzungen ließen sich einfach über die Aktion "Text > Ersetzen" und die Aktivierung der Optionen "Jede Zeile ist eine eigene Ersetzung" beziehungsweise "Jede Zeile ist ein eigener Suchtext" lösen.

Sobald wir für ein Textfeld allerdings diese Option aktiviert haben, können wir das betreffende Textfeld nicht mehr für die Ersetzung mehrzeiliger Texte verwenden. Falls nur eine der beiden Optionen aktiviert ist, können wir zwar noch im jeweils anderen Textfeld mit Zeilenumbrüchen arbeiten, aber sobald beide Optionen aktiviert sind oder wir in beiden Textfeldern Zeilenumbrüche benötigen, brauchen wir eine andere Lösung, wenn wir mehrere mehrzeilige Texte gleichzeitig ersetzen möchten.

Die Lösung heißt: Aktionslisten. Mit Aktionslisten können wir mehrere Aktionen zusammenfassen und diese gleichzeitig ausführen. Konfigurieren können wir eine Aktionsliste im TextKonverter unter "Aktionen > Text > Aktionslisten".

Die Aktion zum Ersetzen von Text heißt "REPLACE" und kann entweder über die grafische Benutzeroberfläche und den Aktionslisteneditor erstellt werden oder in Form von einem Text. Als Text hat die Aktion "REPLACE" die folgende Syntax:

REPLACE Suchwort Ersetzung

Eine Aktion steht immer in einer Zeile und wird eingeleitet durch das Wort der Aktion, hier also "REPLACE". Anschließend folgen die Parameter, die mit einem Leerzeichen voneinander getrennt werden. Der erste Parameter ist das Suchwort, der zweite Parameter die Ersetzung.

Falls das Suchwort oder die Ersetzung Leerzeichen enthält, können wir Anführungszeichen verwenden:

REPLACE "Altes Wort" "Neues Wort"

Wenn wir mehrere Ersetzungen gleichzeitig durchführen möchten, können wir einfach eine Aktionsliste mit je einer Ersetzung pro Zeile erstellen. Also zum Beispiel:

REPLACE a x
REPLACE b y
REPLACE c z

Diese Aktionsliste hat denselben Effekt wie das Beispiel aus dem ersten Abschnitt dieses Tutorials, das wir über die Funktion "Text > Ersetzen" realisiert haben: Jedes Vorkommnis des Buchstabens "a" wird durch "x" ersetzt, "b" durch "y" und "c" durch "z".

Damit haben wir nun fast alles zusammen, was wir für die Definition mehrerer Ersetzungen über Aktionslisten benötigen. Das einzige, was uns allerdings noch fehlt ist, wie wir Ersetzungen mit Zeilenumbrüchen im Rahmen der Aktionslisten realisieren können.

Da uns für die Definition einer Aktion innerhalb einer Aktionsliste nur eine einzige Zeile zur Verfügung steht, können wir einen Zeilenumbruch nicht einfach über die Enter-Taste eingeben. Vielmehr müssen wir für den Windows-Zeilenumbruch die Zeichenfolge "\r\n" statt einem "echten" Zeilenumbruch verwenden.

Ein Beispiel dafür ist die folgende Aktionsliste mit drei  Ersetzungen:

REPLACE abc\r\ndef uvw\r\nxyz
REPLACE ghi\r\njkl "ghi jkl"
REPLACE 123 1\r\n2\r\n3

Mit der ersten Zeile unserer Aktionsliste ersetzen wir die Zeichenkette "abc" gefolgt von einem Zeilenumbruch und der darauf folgenden Zeichenkette "jkl" durch die Zeichenkette "uvw" + Zeilenumbruch + "xyz". Mit der zweiten Zeile ersetzen wir jedes Vorkommnis eines Zeilenumbruchs zwischen den Zeichenketten "ghi" und "jkl" durch ein Leerzeichen. Und mit der dritten und letzten Zeile unserer Aktionsliste fügen wir zwischen jede der Zahlen der Zeichenkette "123" je einen Zeilenumbruch ein.

Wenn Sie Zeilenumbrüche nicht auf diese Art und Weise eingeben möchten, können Sie natürlich auch den Editor für die Erstellung der Aktionslisten verwenden. Wenn Sie eine Aktion innerhalb des Editors oder über den Button "Neue Aktion" anlegen, können Sie Zeilenumbrüche auch in gewohnter Weise über die Enter-Taste eingeben und der TextKonverter kümmert sich um den Rest.

Zuletzt möchten wir uns der Vollständigkeit halber noch ansehen, wie Sie in Ihren Aktionslisten Ersetzungen mit regulären Ausdrücken oder unter Beachtung der Groß- und Kleinschreibung definieren können. Dafür verwenden wir den dritten optionalen Parameter der "REPLACE"-Funktion:

REPLACE [0-9] X -r
REPLACE a X -c
REPLACE a X
REPLACE [a-f] X -cr

Wenn wir als dritten Parameter "-r" verwenden, wird die Ersetzung als regulärer Ausdruck interpretiert. Ein Beispiel sehen wir in der ersten Zeile dieser Aktionsliste. Mit dieser Zeile ersetzen wir alle Ziffern von 0 bis 9 mit einem "X".

Wenn wir dagegen den Parameter "-c" verwenden, wird die Ersetzung unter Beachtung der Groß- und Kleinschreibung durchgeführt. In der zweiten und dritten Zeile dieser Aktionsliste ersetzen wir "a" durch "X". Einmal mit dem Parameter "-c" und einmal ohne. Mit der zweiten Zeile wird nur der Buchstabe "a" durch das "X" ersetzt, da wir nur das kleine "a" definiert haben und durch "-c" konfigurieren, dass die Schreibweise beachtet werden soll. In der dritten Zeile lassen wir das "-c" weg, womit sowohl "a" als auch "A" durch das "X" ersetzt werden.

Natürlich ist auch eine Kombination dieser beiden Parameter möglich. Wie das geht demonstriert die vierte Zeile. Hier definieren wir über den regulären Ausdruck [a-f], dass die Buchstaben a bis f durch X ersetzt werden sollen. Dabei sollen wirklich nur diese kleingeschriebenen Buchstaben ersetzt werden und nicht die Buchstaben A bis F. Würden wir das "c" weglassen, würden auch die Buchstaben A bis F durch "X" ersetzt.

Ersetzungen auf bestimmte Textbereiche beschränken

Alle Ersetzungen, die wir uns in den bisherigen Beispielen und Abschnitten dieses Tutorials angesehen haben, bezogen sich immer auf den gesamten Text, den wir bearbeiten. Mit dem TextKonverter ist es allerdings darüber hinaus auch möglich, den Anwendungsbereich der Ersetzungen auf bestimmte Bereiche eines Textes oder einer Textdatei zu limitieren.

Unter "Aktionen > Zeilen > In Zeilen ersetzen" finden Sie zum Beispiel die Möglichkeit, Ersetzungen nur in frei definierbaren Zeilen eines Textes durchzuführen. Ähnliche Aktionen finden Sie auch unter "Aktionen > CSV > In Feldern ersetzen" oder unter "Aktionen > XML". Mit diesen Funktionen können Sie Ihre Ersetzungen auf bestimmte Spalten oder Felder von CSV-Daten beschränken oder nur in bestimmten inneren Texten, Tagnamen, Attributnamen oder Attributwerten einer XML-Struktur anwenden.

Sowohl die Zeilenaktionen als auch die CSV-Aktionen und XML-Aktionen des TextKonverters enthalten die Möglichkeit, Aktionslisten in der gleichen Weise zu definieren, wie wir es im Abschnitt zuvor gesehen haben. Damit lassen sich auch mehrere Ersetzungen gleichzeitig für jeden dieser Bereiche definieren und anwenden.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Suchen und Ersetzen in Dateinamen

Tutorial | 2 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.