Sed, kurz für Stream EDitor, ist ein Befehl, der verwendet wird, um Texttransformationen und -manipulationen an einer Datei durchzuführen. Einige dieser Transformationen umfassen das Suchen und Ersetzen von Text. Mit dem Linux-Befehl sed können Sie Textdateien manipulieren und bearbeiten, ohne sie überhaupt zu öffnen. In diesem Tutorial lernen Sie, wie Sie Textdateien mit dem Befehl sed bearbeiten.
Sed-Befehlssyntax für Linux
$ sed {OPTIONS} filename
In diesem Tutorial verwenden wir linuxgeek.txt
Datei als unsere Referenzdatei.
# cat linuxgeek.txt
Ausgabe
1. Ersetzen oder Ersetzen einer Zeichenkette
In den meisten Fällen wird der Befehl sed zum Ersetzen von Textzeichenfolgen verwendet.
Der folgende Befehl ersetzt „Linux “ mit „Unix ‘.
# sed 's/Linux/Unix/' linuxgeek.txt
- Die
s
im Befehl ist der Ersetzungsindikator. - Der
/
sind die Trennzeichen Linux
ist der Suchbegriffunix
ist der Ersatzbegriff
Standardmäßig ersetzt der Befehl sed nur das erste Vorkommen in einer Zeile . Die nachfolgenden Vorkommen werden nicht ersetzt oder ersetzt.
Ausgabe
2. Substituieren oder Ersetzen des n-ten Vorkommens in einer Zeile
Wenn Sie das zweite Auftreten einer Zeichenfolge in einer Zeile ersetzen möchten, verwenden Sie den /2
Flagge wie gezeigt.
# sed 's/Linux/Unix/2' linuxgeek.txt
Ausgabe
3. Ersetzen oder Ersetzen aller Vorkommen des Musters in einer Datei
Um alle Vorkommen des Suchmusters in der Datei zu ersetzen, verwenden Sie /g
Flagge. Der /g
ist der globale Ersatz.
# sed 's/Linux/Unix/g' linuxgeek.txt
Ausgabe
4. Ersetzen oder Ersetzen aller Vorkommen einer Zeichenfolge nur in einer bestimmten Zeile
Wenn Sie alle Vorkommen eines Strings in einer bestimmten Zeile ersetzen möchten, z. B. in Zeile 2, verwenden Sie die folgende Syntax
# sed '2 s/Linux/Unix/g' linuxgeek.txt
Ausgabe
5. Ersetzen oder Ersetzen einer Zeichenfolge in einem bestimmten Zeilenbereich
Wenn Sie den Zeilenbereich angeben möchten, in dem die Zeichenfolge ersetzt wird, verwenden Sie das unten gezeigte Beispiel. Das Beispiel weist die Ersetzung an, ab den Zeilen 1 - 3 zu erfolgen
# sed '1,3 s/Linux/Unix/g' linuxgeek.txt
Ausgabe
Außerdem können Sie wie gezeigt Text von einer bestimmten Zeile bis zum Ende der Datei ersetzen
# sed '2,$ s/Linux/Unix/g' linuxgeek.txt
Der Befehl ersetzt alle Vorkommen von der zweiten Zeile bis zur letzten Zeile der Datei.
Ausgabe
6. Setzen Sie das erste Zeichen jedes Wortes in Klammern
Das folgende Beispiel zeigt, wie Sie jedes erste Zeichen eines Wortes in einer Zeile in Klammern setzen können.
$ echo "Hey Guys, Welcome To Linux Operating System" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Ausgabe
7. Zeilen aus einer Datei löschen
Sie können auch den Linux-Befehl sed verwenden, um Zeilen in einer Datei zu löschen.
Beispiele
Syntax:
$ sed 'nd' filename.txt
Um die dritte Zeile in der Datei zu löschen, führen Sie
aus$ sed '3d' linuxgeek.txt
Ausgabe
Um eine Reihe von Zeilen zu löschen, z. B. von Zeile 3 bis Zeile 5 , führen Sie den folgenden Befehl aus:
$ sed '3,5d' linuxgeek.txt
Ausgabe