GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

Einführung

Sed steht für S träum ED itor. Es ist ein Linux-Befehl, der zum Suchen, Finden und Ersetzen oder Einfügen und Löschen von Wörtern und Zeilen in einer Textdatei verwendet wird.

Der häufigste Anwendungsfall des Sed-Befehls ist das Suchen und Ersetzen von Zeichenfolgen in Dateien. Wenn Sie den Sed-Befehl verwenden, können Sie Dateien bearbeiten, ohne sie zu öffnen.

Dieser Artikel erklärt detailliert die Verwendung des Sed-Befehls zum Suchen und Ersetzen von Zeichenfolgen in Dateien.

Alle Beispiele in diesem Tutorial wurden auf Ubuntu 20.04 ausgeführt.

Suchen und Ersetzen

Standardmäßig ist Sed in den meisten Linux-Distributionen installiert. Sie können die Installation von Sed auf Ihrem Linux-System überprüfen, indem Sie Folgendes ausführen:

$ sed --v

Die Ausgabe sieht in etwa so aus:

Die grundlegende Syntax für die Verwendung des Sed-Befehls zum Suchen und Ersetzen von Text lautet:

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

Wobei:

-i:Diese Option veranlasst den Sed-Befehl, Dateien an Ort und Stelle zu bearbeiten, anstatt die Ausgabe auf die Standardausgabe zu schreiben.

s:Es steht für Ersatz.

/ /:Trennzeichen.

g:Es ist ein globales Ersatz-Flag.

DATEI:Die Datei, die Sie mit dem Sed-Befehl bearbeiten möchten.

Es wird dringend empfohlen, Suchmuster, Ersetzungsmuster und andere Argumente in Anführungszeichen zu setzen.

Hier ist zum Beispiel eine Textdatei, die zur Demonstration verwendet wurde:

567 Test test test
test /bin/zsh linuxways.net testbar 789

Führen Sie den folgenden Befehl aus, um alle „test“-Wörter durch „linux“-Wörter zu ersetzen:

$ sed -i 's/test/linux/g' test.txt

Ausgabe:

Wenn Sie das g-Flag nicht verwenden, wird nur das erste Vorkommen des Suchmusters in jeder Zeile ersetzt:

$ sed -i 's/test/linux/' test.txt

Ausgabe:

Wie Sie sehen können, wird im vorherigen Beispiel der Teilstring test auch innerhalb des testbar-Strings platziert. Wenn Sie keinen Teilstring im Suchmuster ersetzen möchten, setzen wir das Suchmuster zwischen zwei Wortgrenzen \b:

$ sed -i 's/\btest\b/linux/g' test.txt

Ausgabe:

Um das Suchmuster unabhängig von der Groß-/Kleinschreibung zu machen, verwenden wir das I-Flag:

$ sed -i 's/test/linux/gI' test.txt

Ausgabe:

In der Linux-Welt werden wir auf viele Anwendungsfälle stoßen, die Trennzeichen in Textdateien enthalten. Wir müssen den Backslash \ verwenden, um die Trennzeichen auszubrechen. Um beispielsweise /bin/zsh durch /usr/bin/bash zu ersetzen, führen Sie Folgendes aus:

$ sed -i 's/\/bin\/zsh/\/usr\/bin\/bash/g' test.txt

Ausgabe:

Rekursives Suchen und Ersetzen

In vielen Fällen möchten Sie Verzeichnisse rekursiv nach Dateien durchsuchen, die eine bestimmte Zeichenfolge enthalten, und diese Zeichenfolge in allen Dateien ersetzen.

Beispielsweise sucht der folgende Befehl die Zeichenfolge „Weg“ und ersetzt sie durch „Straße“ in allen Dateien im aktuellen Verzeichnis.

$ find . -type f -exec sed -i 's/way/road/g' {} +

Wenn die Dateinamen Leerzeichen enthalten, verwenden wir die Option -print0:

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

Um eine Zeichenfolge nur in Dateien mit einer bestimmten Erweiterung zu suchen und zu ersetzen, führen Sie Folgendes aus:

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/way/road/g'

Schlussfolgerung

Sie haben einige gängige Beispiele für die Verwendung des Sed-Befehls durchgesehen. Das Suchen und Ersetzen einer Textzeichenfolge in einer Datei mit dem Sed-Befehl ist nicht so kompliziert, wie Sie es sich vorstellen.

Wenn Sie irgendwelche Bedenken haben, lassen Sie es mich bitte im Kommentarbereich wissen.


Ubuntu
  1. Suchen von Dateien in der Befehlszeile (How To)

  2. So finden Sie die Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen

  3. Wie ersetze ich eine Zeichenfolge in einer oder mehreren Dateien?

  4. Wie verwendet man Sed, um eine mehrzeilige Zeichenfolge zu ersetzen?

  5. So verwenden Sie den Linux-Befehl find zum Suchen von Dateien

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So benennen Sie Dateien und Verzeichnisse in Ubuntu 20.04 um

So installieren und verwenden Sie Busybox in Ubuntu

So finden Sie Dateien in der Ubuntu-Befehlszeile

So finden und ersetzen Sie Text in Vim

So verwenden Sie Sed zum Suchen und Ersetzen einer Zeichenfolge in einer Datei