Sed
steht für Stream-Editor. Es ist ein kommandozeilenbasierter Editor für Linux. sed wird häufig zum Bearbeiten von Dateien als Teil eines Automatisierungsskripts in Linux verwendet, da normale Editoren aktive Benutzereingaben erfordern und Dateien außerhalb der Editor-Bildschirme nicht bearbeiten können. Sed wird am häufigsten zum Suchen und Ersetzen über die Befehlszeile verwendet.
Diese Art von Texteditor kann auch als nicht interaktiver Texteditor kategorisiert werden.
Sehen wir uns einige gängige Optionen zum Bearbeiten von Dateien mit Sed an. Als Beispiel nehmen wir folgende Datei:
$: cat test.txt Ein schneller brauner Hund sprang über die faule Katze. Linux-Betriebssystem. Der Wald in meiner Nähe hat eine Katze sowie Wölfe.
Suchen und ersetzen
Um in einer Datei nach einer Zeichenfolge zu suchen und sie durch eine andere Zeichenfolge zu ersetzen, führen Sie Folgendes aus:
sed -i "s/cat/fox/g" test.txt
Hier die -ich
Flag weist sed an, die Änderungen in die Datei zu schreiben. Ohne diese Flagge sed
wird nur die Datei mit der geänderten Zeichenfolge anzeigen.
In den Anführungszeichen haben wir s/Katze/Fuchs/g
. Der S
ist für den Such- und Ersetzungsbefehl von sed
. Dann haben wir den zu suchenden String, der ist Katze
. Dann die Zeichenfolge, durch die es ersetzt werden soll, d. h. Fuchs
. Schließlich haben wir das optionale g
, die anweist sed
um alle Vorkommen in allen Zeilen der Datei zu ersetzen. Ohne das g
, sed ersetzt nur das erste Vorkommen von Katze
auf jeder Zeile.
Auch hier kann Regex verwendet werden.
sed -i "s/f[a-z]*\./cat\./g"
Einfügung
Um Text vor einer Zeile mit einer übereinstimmenden Zeichenfolge einzufügen, verwenden Sie:
sed -i "/cat/i Start:" test.txt
Hier, Katze
ist die gesuchte Zeichenfolge und Anfang:
ist die Zeichenfolge, die vor der Zeile eingegeben werden soll, in der die gesuchte Zeichenfolge gefunden wird.
Um Text nach einer Zeile einzufügen, verwenden Sie auf ähnliche Weise:
sed -i "/fox/a Ende." test.txt
Löschen
Um eine Zeile zu löschen, die eine Teilzeichenfolge enthält, verwenden Sie:
sed -i "/Linux/d" test.txt
Um eine Zeile mit Zeilennummer zu löschen, z. in der ersten Zeile verwenden Sie:
sed -i '1d' test.txt
Mehrere Funktionen kombinieren
Um mehrere Funktionen zu kombinieren, z. suchen und ersetzen, löschen, in einem Befehl, -e
Flagge verwendet werden.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Beifall!