Das Ersetzen von Text in Dateien ist eine der häufigsten Vorgänge, die Sie beim Ausführen eines Linux-Betriebssystems ausführen müssen. Das Ersetzen von Text kann in vielen Fällen nützlich sein: das Korrigieren von Tippfehlern, das Ersetzen veralteter oder fehlerhafter Codezeilen sowie das Aktualisieren von Daten.
Unter Linux gibt es mehrere Möglichkeiten, Text in einer Datei zu ersetzen. Eine der einfachsten Methoden ist die Verwendung des sed-Befehls. sed ist ein Befehlszeilenprogramm, mit dem Sie den Text in einer Datei oder einem Datenstrom mithilfe von festgelegten Regeln ändern können.
Beispiel für die Verwendung des Befehls sed: sed 's/alter_text/neuer_text/g' Datei.txt. In diesem Beispiel sucht sed in der Datei nach einer Datei.txt alle Vorkommen der Zeichenfolge "alter Text" und ersetzen sie durch "neuer Text". Die Option "g" bedeutet, dass die Ersetzung für alle Vorkommen in der Zeichenfolge vorgenommen werden muss, nicht nur für die erste.
Neben sed gibt es andere Methoden zum Ersetzen von Text in einer Linux-Datei. Sie können beispielsweise den Befehl awk verwenden, mit dem Sie verschiedene Vorgänge für strukturierte Daten ausführen können, einschließlich des Ersetzens von Text. Sie können auch den Vi- oder vim-Texteditor verwenden, der über leistungsstarke Funktionen zum Suchen und Ersetzen von Text verfügt.
Beachten Sie, dass das Ersetzen von Text in einer Datei eine gefährliche Operation sein kann. Daher wird empfohlen, dass Sie vor dem Ersetzen eine Sicherungskopie der Dateien erstellen oder mit einer Kopie der Originaldatei arbeiten.
In diesem Artikel haben wir uns die grundlegenden Möglichkeiten zum Ersetzen von Text in Linux-Dateien angesehen, einschließlich der Verwendung des Befehls sed, awk und des vi-Texteditors. Denken Sie daran, dass es immer empfehlenswert ist, bei der Arbeit mit Linux-Dateien vorsichtig zu sein und bei unvorhergesehenen Situationen die Möglichkeit zur Wiederherstellung von Daten zu berücksichtigen.
Wie ersetze ich Text in einer Linux-Datei
Mit dem Befehl sed (stream editor) können Sie verschiedene Textoperationen im Stream-Modus ausführen. Um den Text in einer Datei mit sed zu ersetzen, müssen Sie den folgenden Befehl ausführen:
sed 's/Suchtext/ersetzen/' Datei
In diesem Team suchtext - dies ist ein Satz oder ein Wort, das ersetzt werden muss, und Ersatz - dies ist eine neue Phrase, die den gesuchten Text ersetzen soll.
Zum Beispiel, wenn in der Datei example.txt muss alle Vorkommen des Wortes "Linux" durch das Wort "Unix" ersetzen, der Befehl würde folgendermaßen aussehen:
sed 's/Linux/Unix/' example.txt
Wenn Sie diesen Befehl ausführen, wird sed durch die Example-Datei geleitet.txt und ersetzt alle Vorkommen des Wortes "Linux" durch das Wort "Unix". Das Ergebnis wird angezeigt. Wenn Sie die Änderungen in der Quelldatei speichern möchten, müssen Sie das Flag -i hinzufügen:
sed -i 's/Linux/Unix/' example.txt
Jetzt werden alle Änderungen an der Example-Datei vorgenommen.txt.
Mit dem Befehl sed können Sie Text in Dateien mit nur einem Befehl ersetzen. Wenn Sie jedoch komplexere Ersetzungen durchführen oder mehrere Dateien suchen und ersetzen müssen, sollten Sie erweiterte Tools wie Perl oder awk ausprobieren.
Öffnen der Datei mit dem Befehl vi und Wechseln in den Ersetzungsmodus
Führen Sie den folgenden Befehl im Terminal aus, um die Datei im vi-Editor zu öffnen:
Hier ist filename der Name der Datei, die Sie öffnen möchten. Wenn eine Datei mit diesem Namen nicht existiert, erstellt vi eine neue Datei mit dem angegebenen Namen.
Nachdem Sie den Befehl vi ausgeführt haben, wird der Editor geöffnet und Sie werden den Inhalt der Datei sehen. Standardmäßig wird vi im Ansichtsmodus geöffnet, in dem Sie nur die Datei anzeigen können.
Um in den Bearbeitungsmodus zu wechseln und den Text zu ersetzen, müssen Sie die i-Taste auf der Tastatur drücken. Danach können Sie beginnen, Text in der Datei einzugeben oder zu ändern.
Wenn Sie ein bestimmtes Stück Text ersetzen müssen, drücken Sie im Bearbeitungsmodus die Esc -Taste , um in den Befehlsmodus zu wechseln, und drücken Sie dann die Taste : , um den Ersetzungsbefehl einzugeben. Um beispielsweise alle Vorkommen des Wortes "old" durch "new" in der gesamten Datei zu ersetzen, geben Sie den folgenden Befehl ein:
Hier ist %s der Ersetzungsbefehl, old ist der zu ersetzende String, new ist der zu ersetzende String, und g ist der Parameter, der angibt, alle Vorkommen zu ersetzen.
Nachdem Sie den Ersetzungsbefehl eingegeben haben, drücken Sie die Eingabetaste, und vi ersetzt alle Vorkommen des angegebenen Textes. Drücken Sie dann die Esc-Taste, um die Änderungen zu speichern und den Editor zu verlassen, und geben Sie dann :wq ein.
Jetzt wissen Sie, wie Sie eine Datei mit dem Befehl vi öffnen und in den Ersetzungsmodus wechseln, um den Text in der Datei zu ändern oder zu ersetzen.
Ersetzen von Text in einer Datei mit dem Befehl sed
Das Team sed (stream Editor) unter Linux bietet die Möglichkeit, Textdaten in Dateien zu suchen und zu ersetzen. Dieses leistungsstarke Tool ermöglicht das automatisierte Ersetzen von Strings, die bestimmte Bedingungen erfüllen, in einer oder mehreren Dateien mit einem einzigen Befehl.
Die grundlegende Syntax für den sed-Befehl lautet wie folgt:
| Das Team | Die Beschreibung |
|---|---|
| s/muster/ersatz/[Flagge] | Ersetzt das erste Vorkommen der Vorlage durch das Ersetzen in jeder Zeile. |
| s/muster/ersatz/[Flagge]g | Ersetzt alle Vorkommen der Vorlage durch die Ersetzung in jeder Zeile. |
Beispiele für die Verwendung des Befehls sed:
1. Ersetzt das erste Vorkommen des Wortes "hello" durch "world" in der Datei "file".txt":
sed 's/hello/world/' file.txt
2. Ersetzt alle Vorkommen des Wortes "hello" durch "world" in der Datei "file".txt":
sed 's/hello/world/g' file.txt
3. Ersetzen von Text mithilfe eines regulären Ausdrucks in einer Datei:
sed 's/[0-9]/#/g' file.txt
Der sed-Befehl ist eines der am häufigsten verwendeten Werkzeuge zum Ersetzen von Text in Linux. Es ermöglicht Ihnen, den Inhalt von Dateien auf einfache Weise zu ändern und routinemäßige Textverarbeitungsaufgaben zu automatisieren.
Anwenden regulärer Ausdrücke beim Ersetzen von Text in einer Datei
Wenn Sie die Aufgabe ausführen, Text in einer Datei unter Linux zu ersetzen, können Sie reguläre Ausdrücke verwenden, um eine flexiblere und präzisere Suche und Ersetzung durchzuführen.
Reguläre Ausdrücke sind Muster, die eine Folge von Zeichen beschreiben. Sie können verschiedene Sonderzeichen und Metazeichen enthalten, mit denen Sie Anforderungen für die gesuchten Zeichenfolgen festlegen können.
Wenn Sie reguläre Ausdrücke verwenden, um Text in einer Datei zu ersetzen, müssen Sie die folgenden Schritte ausführen:
1. Öffnen einer Datei:
Zuerst müssen Sie die Datei öffnen, in der Sie den Text ersetzen möchten. Sie können dazu den Befehl vi oder einen anderen Befehlszeileneditor verwenden.
2. Auswählen des Ersetzungsmodus:
Sie müssen den Austauschmodus auswählen, bevor Sie den Austausch durchführen. Drücken Sie dazu im vi-Editor die Taste Esc. geben Sie dann den Befehl ein : und wählen Sie den Ersetzungsmodus aus, zum Beispiel, %s.
3. Festlegen eines regulären Ausdrucks:
Nachdem Sie den Ersetzungsmodus ausgewählt haben, müssen Sie einen regulären Ausdruck angeben, der für die Suche nach dem gesuchten Text verwendet werden soll. Reguläre Ausdrücke können verschiedene Metazeichen enthalten, z. B. . (entspricht einem beliebigen Zeichen), * (entspricht einer beliebigen Anzahl von Zeichen), [ ] (entspricht einem beliebigen Zeichen in der angegebenen Liste) und anderen.
4. Festlegen des Ersetzungstexts:
Nachdem Sie einen regulären Ausdruck angegeben haben, müssen Sie den Text angeben, durch den der gesuchte Text ersetzt werden soll. Im vi-Editor können Sie dies durch Drücken einer Taste tun Enter nach dem Festlegen eines regulären Ausdrucks.
5. Ersetzen von Text:
Nachdem Sie den Ersetzungstext festgelegt haben, können Sie den gesuchten Text durch den angegebenen Text ersetzen. Dazu können Sie den Befehl verwenden g, um alle Vorkommen in einer Zeichenfolge oder einen Befehl zu ersetzen x, um nur das erste Vorkommen in einer Zeile zu ersetzen.
Wenn Sie reguläre Ausdrücke verwenden, um Text in einer Datei unter Linux zu ersetzen, müssen Sie vorsichtig sein und die Ergebnisse des Ersetzens sorgfältig überprüfen, um unerwünschte Änderungen an der Datei zu vermeiden.
Ersetzen von Text in mehreren Dateien mit dem Befehl find und sed
Um Text in mehreren Dateien mit dem Befehl find und sed zu ersetzen, können Sie den folgenden Befehl verwenden:
find /путь/к/каталогу -type f -name "шаблон_файла" -exec sed -i 's/искомый_текст/заменяемый_текст/g' <> +
- /pfad/zu/Verzeichnis - Pfad zu dem Verzeichnis, in dem nach Dateien gesucht werden soll;
- Dateivorlage - Die Vorlage für den Dateinamen. Dies kann sowohl der genaue Dateiname als auch die Wildcard-Platzhaltermaske sein;
- suchtext - Der Text, den Sie suchen und ersetzen möchten;
- ersetzbarer Text - Der Text, durch den der gefundene Text ersetzt werden soll.
Der folgende Befehl ersetzt beispielsweise alle Vorkommen von "eins" durch "eins" in allen Dateien, die sich im Verzeichnis /home/user/docs befinden :
find /home/user/docs -type f -name "*.txt" -exec sed -i 's/один/одна/g' <> +
Der Befehl durchsucht alle Dateien mit der Erweiterung .txt im angegebenen Verzeichnis und darunter, und ersetzen Sie alle Vorkommen von "eins" durch "eins" in jeder der gefundenen Dateien.
Beachten Sie, dass die Verwendung der Option -i mit dem Befehl sed es Ihnen ermöglicht, Dateien direkt zu ändern. Wenn Sie einfach die Ergebnisse des Ersetzens anzeigen möchten, ohne die Dateien zu ändern, können Sie diese Option deaktivieren.
Ersetzen von Text in einer Datei, wobei das Original mit dem Befehl sponge beibehalten wird
Um den Befehl sponge zu verwenden, müssen Sie das Paket moreutils installieren. Führen Sie dazu den folgenden Befehl aus:
sudo apt-get install moreutils
Nachdem Sie das Paket moreutils installiert haben, können Sie den Befehl sponge wie folgt verwenden:
cat file.txt | sed 's/old_text/new_text/' | sponge file.txt
In diesem Beispiel lesen wir den Inhalt der Datei file.txt, ersetzen Sie alle Vorkommen der Zeichenfolge "old_text" durch die Zeichenfolge "new_text" mit dem Befehl "sed" und speichern Sie die Änderungen dann wieder in der Datei file.txt mit dem Befehl sponge.
Der Vorteil der Verwendung des Befehls sponge besteht darin, dass Sie die Originaldatei speichern können, anstatt eine neue Datei mit Änderungen zu erstellen. Dies ist besonders nützlich, wenn Sie Metainformationen oder Dateiberechtigungen speichern müssen, die beim Erstellen einer neuen Datei möglicherweise verloren gehen.
Suchen und Ersetzen von Text in einer Datei mithilfe des vim-Editors
Führen Sie die folgenden Schritte aus, um Text in vim zu suchen und zu ersetzen:
- Öffnen Sie die Datei in vim mit dem Befehl vim Dateiname.
- Durch Drücken der Taste in den Suchmodus gelangen /.
- Geben Sie den zu suchenden Text ein, und drücken Sie Enter.
- Wechseln Sie in den Ersetzungsmodus, indem Sie die Taste drücken :.
- Geben Sie den Ersetzungsbefehl im Format ein s/Suchtext/ersetzter Text/ und drücken Sie die Taste Enter.
Wenn Sie beispielsweise alle Vorkommen des Wortes "Linux" durch "UNIX" ersetzen möchten, lautet der Ersetzungsbefehl wie folgt: s/Linux/UNIX/.
In vim gibt es auch die Möglichkeit, für jedes Vorkommen von Text in einer Datei einen Ersatz durchzuführen. Fügen Sie dazu ein Flag hinzu g nach dem Ersatzbefehl. Zum Beispiel: s/Linux/UNIX/g.
Um nur die aktuelle Zeile zu ersetzen, müssen Sie ein Flag hinzufügen c. Zum Beispiel: s/Linux/UNIX/c.
Sie können auch reguläre Ausdrücke für komplexere Such- und Ersetzungsaufgaben verwenden. Um beispielsweise Wörter, die mit dem Buchstaben "A" beginnen, durch das Wort "Apple" zu ersetzen, können Sie den folgenden Befehl verwenden: s/\bA\w*/Apple/g.
Das Suchen und Ersetzen von Text in einer Datei mit dem vim–Editor ist ein leistungsfähiges und flexibles Werkzeug, das eine Vielzahl von Textänderungsvorgängen ermöglicht. Nutzen Sie die Funktionen von vim, um Text in Dateien Ihres Linux-Systems schnell und effizient zu ersetzen.