sed Befehl zum Ersetzen eines Strings in einer Datei

Sed Command Replace String File

Wann immer wir mit Dateien jeglicher Art arbeiten, ist es eine sehr gängige Praxis, diese Dateien durch Suchen und Ersetzen von Wörtern zu ändern. Die meisten Texteditoren bieten verschiedene GUI-basierte Methoden, um diese Änderungen durchzuführen. Manchmal benötigen Sie jedoch eine Möglichkeit, die Wörter in einer Datei über das Terminal zu finden und zu ersetzen. Daher führen wir Sie in diesem Artikel durch die Methode zur Verwendung des sed-Befehls zum Ersetzen einer Zeichenfolge in einer Textdatei. Wir werden auch die verschiedenen Szenarien beleuchten, in denen dieser Befehl verwendet werden kann.

Hinweis: Wir werden Linux Mint 20 verwenden, um die Verwendung des sed-Befehls zum Ersetzen eines Strings in einer Datei zu demonstrieren. Sie können auch jede andere Linux-Variante verwenden, wenn Sie möchten.



Verwendung des sed-Befehls:

Nun zeigen wir Ihnen einige sehr interessante Beispiele zur Darstellung der Verwendung des sed-Befehls unter Linux. Sehen wir uns an, wie dieser Befehl in verschiedenen Szenarien funktioniert.



Erstellen einer Textdatei zur Demonstration:

Um die Verwendung des sed-Befehls zu demonstrieren, möchten wir mit einer Textdatei arbeiten. Sie können jedoch sogar eine Bash-Datei oder eine andere Datei Ihrer Wahl erstellen. Zweitens erstellen wir die Datei im Home-Verzeichnis, damit wir beim Zugriff auf diese Datei keine komplexen Pfade angeben müssen. Um eine Textdatei zu erstellen, sollten die folgenden Schritte durchgeführt werden:



Klicken Sie auf das Dateimanager-Symbol in Ihrer Linux Mint 20-Taskleiste:

Erstellen Sie nun eine neue Textdatei im Home-Verzeichnis, indem Sie mit der rechten Maustaste irgendwo dort drüben klicken und dann die Option Neues Dokument aus dem kaskadierenden Menü und die Option Dokument leeren aus dem untergeordneten Menü auswählen. Nachdem die Textdatei erstellt wurde, geben Sie ihr einen passenden Namen. Für dieses spezielle Beispiel habe ich es als sed.txt bezeichnet.



Doppelklicken Sie auf diese Datei, um sie zu öffnen, und geben Sie einen beliebigen Text ein, wie in der Abbildung unten gezeigt. Speichern Sie diese Textdatei, indem Sie Strg + S drücken und schließen Sie sie dann.

Starten Sie nun das Terminal in Linux Mint 20 wie in der folgenden Abbildung gezeigt:

Nachdem Sie das Terminal in Linux Mint 20 gestartet haben, können Sie alle unten aufgeführten Beispiele nacheinander durchgehen.

Verwenden des sed-Befehls zum Ersetzen aller Vorkommen eines bestimmten Wortes:

Sie können den Befehl sed verwenden, um alle Vorkommen eines bestimmten Wortes in einer Textdatei zu ersetzen. Die Syntax zum Erreichen dieses Ziels ist unten aufgeführt:

$sed'S/sed/FindWord/Wort ersetzen/’ file.txt

Hier müssen Sie FindWord durch das Wort ersetzen, das Sie ersetzen möchten, und ReplaceWord durch das zu ersetzende Wort. Außerdem müssen Sie file durch den Namen der Datei ersetzen, in der Sie diese Ersetzungen vornehmen möchten. In diesem Szenario habe ich FindWord durch sed und ReplaceWord durch replace ersetzt. Unser Dateiname war sed.txt. Es wird auch im folgenden Bild gezeigt:

Die erfolgreiche Ausführung dieses Befehls zeigt Ihnen die Änderungen an, die durch die Ausführung dieses Befehls auf Ihrem Terminal aufgetreten sind:

Verwenden des sed-Befehls zum Ersetzen des n-ten Vorkommens eines gegebenen Wortes in jeder Zeile:

Das obige Szenario war das einfachste Ersetzungsszenario, jedoch möchten Sie manchmal nicht alle Vorkommen eines Wortes ersetzen, sondern nur das erste, zweite oder n-te Vorkommen dieses Wortes in allen Zeilen. Dazu können Sie den folgenden Befehl ausführen:

$sed'S/FindWord/Wort ersetzen/num’ file.txt

Hier müssen Sie FindWord durch das Wort ersetzen, das Sie ersetzen möchten, und ReplaceWord durch das zu ersetzende Wort. Außerdem müssen Sie file durch den Namen der Datei ersetzen, in der Sie diese Ersetzungen vornehmen möchten. In diesem Szenario habe ich FindWord replace und ReplaceWord durch sed ersetzt. Unser Dateiname war sed.txt. Außerdem bezieht sich num auf das Vorkommen oder die Position des zu ersetzenden Wortes. In dem demonstrierten Beispiel möchte ich das erste Vorkommen von replace in jeder Zeile durch sed ersetzen, wie in der folgenden Abbildung gezeigt:

Die erfolgreiche Ausführung dieses Befehls zeigt Ihnen die Änderungen an, die durch die Ausführung dieses Befehls auf Ihrem Terminal aufgetreten sind:

Verwenden des Befehls sed zum Ersetzen eines bestimmten Wortes in einer bestimmten Zeile:

Manchmal möchten Sie ein bestimmtes Wort nur in einer bestimmten Zeile ersetzen und nicht im gesamten Dokument. Dazu müssen Sie diese bestimmte Zeilennummer im folgenden Befehl explizit angeben:

$sed‘LineNum s/FindWord/Wort ersetzen/’ file.txt

Hier müssen Sie FindWord durch das Wort ersetzen, das Sie ersetzen möchten, und ReplaceWord durch das zu ersetzende Wort. Außerdem müssen Sie file durch den Namen der Datei ersetzen, in der Sie diese Ersetzungen vornehmen möchten. In diesem Szenario habe ich FindWord sed und ReplaceWord durch replace ersetzt. Unser Dateiname war sed.txt. Außerdem müssen Sie LineNum durch die Zeilennummer der jeweiligen Zeile ersetzen, in der Sie die Ersetzung vornehmen möchten. In diesem Beispiel wollten wir in Zeile 2 unserer Datei sed durch replace ersetzen, wie in der folgenden Abbildung gezeigt:

Die erfolgreiche Ausführung dieses Befehls zeigt Ihnen die Änderungen an, die durch die Ausführung dieses Befehls auf Ihrem Terminal aufgetreten sind. Sie können leicht überprüfen, dass die genannten Änderungen nur in Zeile 2 unserer Akte und nicht im gesamten Text aufgetreten sind.

Abschluss:

Wann immer Sie ein Wort in einer Datei ersetzen müssen, müssen Sie als Erstes Ihre spezielle Anforderung ermitteln, dh ob Sie dieses bestimmte Wort in der gesamten Datei ersetzen oder ein bestimmtes Vorkommen von ersetzen möchten dieses bestimmte Wort, oder Sie möchten dieses Wort in einer bestimmten Zeile ersetzen. Nachdem Sie Ihr spezielles Szenario identifiziert haben, können Sie diese spezifische Methode aus den in diesem Artikel beschriebenen Beispielen verwenden.