Text nur in bestimmten Zeilen ersetzen
Tutorial von Stefan Trost | 27.11.2022 um 21:39
Es gibt Situationen, in denen wir eine Ersetzung nicht im Gesamttext beziehungsweise in jeder Zeile eines Textes oder einer Textdatei durchführen möchten, sondern nur in spezifischen ausgewählten Zeilen. Zum Beispiel nur in der ersten Zeile eines Textes, nur in Zeilen mit bestimmten Zeilennummern oder in Zeilen ab oder bis zu einer bestimmten Zeilennummer, nur in Zeilen, die einen Text enthalten oder mit einem Text beginnen, nur in ungeraden Zeilen oder in Zeilen, die nach sonstigen Kriterien ausgewählt werden sollen. Wie das funktioniert möchten wir Ihnen in diesem Tutorial erklären.
Wir benutzen für diese Aufgabe das Programm TextKonverter, mit dem Sie die Zeilen ungespeicherter Texte genauso wie die Zeilen einer oder mehrerer Textdateien gleichzeitig bearbeiten können. Ungespeicherte Texte können Sie für die Zeilenbearbeitung einfach in das Feld "Original" kopieren, Textdateien können Sie aus einem beliebigen Ordner auf das Programm ziehen, um Sie zu bearbeiten.
Im folgenden möchten wir uns die nächsten verschiedenen Fälle von Ersetzungen in einer benutzerdefinierten Auswahl von Zeilen ansehen:
- Text nur in Zeilen mit einer bestimmten Zeilennummer ersetzen
- Text nur in Zeilen ersetzen, die einen bestimmten Text enthalten
- Zeilen, in denen ersetzt werden soll über Aktionslisten definieren
Text nur in Zeilen mit einer bestimmten Zeilennummer ersetzen
Als erstes möchten wir uns den einfachsten Fall für ein Kriterium zur Auswahl von Zeilen ansehen: Die Auswahl über Zeilennummern. Wenn wir einen Text nur in Zeilen mit einer oder mit mehreren bestimmten Zeilennummern ersetzen möchten, können wir mit dem TextKonverter folgendermaßen vorgehen:
- Als erstes aktivieren wir die Aktion "In Zeilen ersetzen", die Sie auf der rechten Seite des Programms unter "Aktionen > Zeilen" finden.
- In den Optionen der Aktion können Sie als nächstes Ihren Suchtext und Ihre gewünschte Ersetzung eingeben. Wenn Sie möchten können Sie hier optional auch mit regulären Ausdrücken arbeiten.
- Zuletzt definieren Sie, in welchen Zeilen der Text ersetzt werden soll. Dafür aktivieren Sie die Option "Gemäß Zeilennummern" und tragen Ihre gewünschten Zeilennummern in das Feld unter "In den folgenden Zeilen" ein.
Einzelne Zeilennummern können einfach als Zahl in das Feld eingetragen werden. Also zum Beispiel "1" für eine Ersetzung nur in der ersten Zeile oder "7", um nur in der siebten Zeile zu ersetzen. Mehrere Zeilennummern können mit einem Komma getrennt werden, also zum Beispiel "2,5,10" um nur in der zweiten, fünften und zehnten Zeile zu ersetzen. Zusammenhängende Zeilennummern können auch als Range angegeben werden, also zum Beispiel "3-7" für Ersetzungen nur in der dritten, vierten, fünften, sechsten oder siebten Zeile. Natürlich können Sie auch einzelne Zeilennummern mit Ranges kombinieren, zum Beispiel in der Form "1-3,5,7-10" für die erste, zweite, dritte, fünfte, siebte, achte, neunte und zehnte Zeile.
Text nur in Zeilen ersetzen, die einen bestimmten Text enthalten
In unserem zweiten Beispiel möchten wir die Zeilen, in denen ersetzt werden soll, unabhängig von deren Zeilennummern auswählen: Wir möchten unsere Ersetzung dieses mal ausschließlich in Zeilen durchführen, die einen definierten Text enthalten.
- Wie in unserem ersten Beispiel nutzen wir dafür wieder die Aktion "Aktionen > Zeilen > In Zeilen ersetzen", in deren Optionen wir auf die gleiche Weise wie in unserem ersten Beispiel den Suchtext und den Ersetzungstext eingeben können.
- Dieses Mal aktivieren wir aber nicht die Option zur Eingabe von Zeilennummern, sondern die Option "In Zeilen, die Text enthalten".
- Unterhalb dieser Option im Textfeld mit der Überschrift "In Zeilen, die den folgenden Text enthalten", können wir einen beliebigen Text eingeben. In der Vorschau sehen wir sogleich, dass alle Zeilen, die den angegebenen Text nicht enthalten, von der Ersetzung ausgeschlossen werden.
Wenn wir die Option "Als regulären Ausdruck interpretieren" aktivieren, können wir statt einem simplen Text auch einen regulären Ausdruck für die Bestimmung der Zeilen verwendet. Dies eröffnet uns deutlich flexiblere Eingaben und Möglichkeiten als lediglich mit statischen Texten zu arbeiten. Mit dem regulären Ausdruck [0-9], der für eine beliebige Zahl zwischen 0 und 9 steht, könnten wir beispielsweise nur in denjenigen Zeilen ersetzen, die eine beliebige Ziffer enthält. Ein anderes Beispiel wäre der reguläre Ausdruck ^a, der für Zeilen steht, die mit dem Buchstaben "a" beginnen.
Mit der weiteren Option "Gesamte Zeile muss dem Text/RegEx entsprechen" steuern Sie, ob die gesamte Zeile mit dem Text übereinstimmen muss oder ob auch dann eine Zeile ausgewählt werden soll, wenn Sie nur in Teilen mit dem Text übereinstimmt beziehungsweise den Text nur in irgendeiner Form enthält.
Zeilen, in denen ersetzt werden soll über Aktionslisten definieren
Aktionslisten bieten im TextKonverter die flexibelste Art und Weise, Zeilen in denen ersetzt werden soll, auszuwählen. Sie finden alle Einstellungen zum Anlegen der Aktionslisten für die Bearbeitung von Zeilen unter "Aktionen > Zeilen > Aktionslisten".
Über die Aktionslisten und die Aktion REPLACE_IN_LINES ist es nicht nur möglich, ausschließlich in Zeilen mit einer bestimmten Zeilennummer oder lediglich in Zeilen, die einen bestimmten Text enthalten, zu ersetzen, sondern zum Beispiel auch nur in Zeilen mit einer bestimmten Länge, Mindestlänge oder Maximallänge, nur in geraden oder ungeraden Zeilen, nur in jeder Xten Zeile, in Zeilen, die mit einem bestimmten Text aufhören oder anfangen und vieles mehr.
Auch die Kombination mehrerer dieser Kriterien ist möglich. Als Beispiel möchten wir uns die folgende Aktionsliste ansehen:
SELECT_LINES 1-10 DESELECT_LINES CONTAINING_DIGITS DESELECT_LINES MATCHING_TEXT Auftrag DESELECT_LINES WITH_LESS_CHARS_THAN 3 DESELECT_LINES CONTAINING_WHITESPACE REPLACE_IN_LINES SELECTED a x
Wir möchten den Buchstaben "a" durch den Buchstaben "x" ersetzen. Allerdings nur innerhalb der ersten 10 Zeilen unseres Textes und von diesen zehn Zeilen nur in denjenigen Zeilen, die keine Zahlen enthalten, nicht dem Text "Auftrag" entsprechen, aus mehr als 2 Zeichen bestehen und keinen Whitespace wie Leerzeichen enthalten.
Diese Aufgabe realisieren wir über unsere Aktionsliste so, dass wir zunächst die ersten 10 Zeilen unseres Textes über die Funktion "SELECT_LINES" auswählen und anschließend alle Zeilen, die unseren Ausschlusskriterien entsprechen über "DESELECT_LINES" aus unserer Auswahl entfernen. Übrig bleiben die Zeilen, in denen wir unsere Ersetzung durchführen möchten. Und dies machen wir mit REPLACE_IN_LINES und dem Parameter "SELECTED", der die Ersetzung auf die gerade ausgewählten Zeilen anwendet.
Würden wir statt "SELECTED" die Zeilen "1-10" direkt definieren, also "REPLACE_IN_LINES 1-10 a x" schreiben, würde der Buchstabe "a" durch den Buchstaben "x" in den ersten 10 Zeilen ersetzt, ohne weitere Kriterien zu berücksichtigen.
Übrigens brauchen Sie sich nicht die einzelnen Befehle für die Aktionslisten zu merken. Sie können Ihre Aktionslisten im TextKonverter auch einfach über den integrierten Aktionslisten-Editor zusammenstellen, der Ihnen diese Arbeit abnimmt.
Über den Autor
Software 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
Mehrere Texte gleichzeitig ersetzen
Tutorial | 0 Kommentare
MySQL: Zeilenumbrüche in MySQL
Tipp | 0 Kommentare
PHP: Nur bestimmte Buchstaben, Zahlen und Zeichen in einem String zulassen
Tipp | 10 Kommentare
Leerzeichen vom Beginn und Ende der Zeilen eines Textes entfernen
Tutorial | 0 Kommentare
Windows Batch Script: Computer herunterfahren
Tutorial | 2 Kommentare
Delphi: CanvasTextOut Ausrichtung: Align Left, Right and Center
Tipp | 0 Kommentare
Textdateien mit fester Zeilenlänge umschreiben
Tutorial | 0 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.