Sed-Befehl oder Stream-Editor ist ein sehr leistungsfähiges Dienstprogramm, das von Linux/Unix-Systemen angeboten wird. Es wird hauptsächlich zur Textersetzung verwendet , Suchen &Ersetzen, aber es kann auch andere Textmanipulationen wie Einfügen durchführen , Löschung , Suche usw. Mit SED können wir komplette Dateien bearbeiten, ohne sie tatsächlich öffnen zu müssen. Sed unterstützt auch die Verwendung regulärer Ausdrücke, was Sed zu einem noch leistungsfähigeren Testmanipulationstool macht .
In diesem Artikel werden wir anhand einiger Beispiele lernen, den SED-Befehl zu verwenden. Die grundlegende Syntax für die Verwendung des Befehls sed lautet:
sed OPTIONEN… [SKRIPT] [INPUTFILE…]
Sehen wir uns nun einige Beispiele an.
Beispiel :1) Teiltext einer Datei anzeigen
Mit sed können wir nur einen Teil einer Datei anzeigen, anstatt die gesamte Datei zu sehen. Um einige Zeilen der Datei anzuzeigen, verwenden Sie den folgenden Befehl,
[[email protected] ~]$ sed -n 22,29p testfile.txt
Hier unterdrückt die Option 'n' das Drucken der gesamten Datei und die Option 'p' druckt nur die Zeilen von 22 bis 29.
Beispiel :2) Alle außer einigen Zeilen anzeigen
Um den gesamten Inhalt einer Datei mit Ausnahme einiger Teile anzuzeigen, verwenden Sie den folgenden Befehl,
[[email protected] ~]$ sed 22,29d testfile.txt
Option 'd' entfernt die erwähnten Zeilen aus der Ausgabe.
Beispiel :3) Zeige jede 3. Zeile beginnend mit der N-ten Zeile an
Zeigen Sie den Inhalt jeder 3. Zeile beginnend mit Zeilennummer 2 oder einer anderen Zeile an, verwenden Sie den folgenden Befehl
[[email protected] ~]$ sed -n '2~3p' file.txt
Beispiel :4 ) Löschen einer Zeile mit dem Befehl sed
Um eine Zeile mit sed aus einer Datei zu löschen, verwenden Sie den folgenden Befehl,
[[email protected] ~]$ sed Nd testfile.txt
wobei 'N' die Zeilennummer ist und die Option 'd' die erwähnte Zeilennummer löscht. Um die letzte Zeile der Datei zu löschen, verwenden Sie
[[email protected] ~]$ sed $d testfile.txt
Beispiel :5) Zeilenbereich löschen
Um eine Reihe von Zeilen aus der Datei zu löschen, führen Sie
aus[[email protected] ~]$ sed '29,34d' testfile.txt
Dadurch werden die Zeilen 29 bis 34 aus der Datei testfile.txt gelöscht.
Beispiel :6) Löschen von anderen als den erwähnten Zeilen
Um andere als die erwähnten Zeilen aus einer Datei zu löschen, verwenden wir ‘!’
[[email protected] ~]$ sed '29,34!d' testfile.txt
Hier wird die Option „!“ als nicht verwendet, sodass die Bedingung umgekehrt wird, d. H. Die erwähnten Zeilen werden nicht gelöscht. Alle anderen Zeilen 29-34 werden aus den Dateien testfile.txt gelöscht.
Beispiel :7) Hinzufügen von Leerzeilen/Leerzeichen
Um nach jeder nicht leeren Zeile eine Leerzeile einzufügen, verwenden wir die Option „G“,
[[email protected] ~]$ sed G testfile.txt
Beispiel :8) Suchen und Ersetzen einer Zeichenkette mit sed
Um eine Zeichenfolge aus der Datei zu suchen und zu ersetzen, verwenden wir das folgende Beispiel,
[[email protected] ~]$ sed 's/danger/safety/' testfile.txt
hier sucht Option 's' nach dem Wort 'danger' und ersetzt es in jeder Zeile nur beim ersten Vorkommen durch 'safety'.
Beispiel :9) Suche und ersetze einen String in der ganzen Datei mit sed
Um das Wort vollständig aus der Datei zu ersetzen, verwenden wir die Option „g“ durch „s“,
[[email protected] ~]$ sed 's/danger/safety/g' testfile.txt
Beispiel :10) Ersetze das n-te Vorkommen des Zeichenkettenmusters
Wir können auch eine Zeichenfolge beim n-ten Vorkommen aus einer Datei ersetzen. Ersetze zum Beispiel „Gefahr“ nur beim zweiten Vorkommen durch „Sicherheit“,
[[email protected] ~]$ sed ‘s/danger/safety/2’ testfile.txt
Um „Gefahr“ beim zweiten Auftreten jeder Zeile der gesamten Datei zu ersetzen, verwenden Sie
[[email protected] ~]$ sed 's/danger/safety/2g' testfile.txt
Beispiel :11) Ersetze einen String in einer bestimmten Zeile
Um eine Zeichenfolge nur aus einer bestimmten Zeile zu ersetzen, verwenden Sie
[[email protected] ~]$ sed '4 s/danger/safety/' testfile.txt
Dadurch wird nur die Zeichenfolge aus der vierten Zeile der Datei ersetzt. Wir können auch eine Reihe von Zeilen anstelle einer einzelnen Zeile angeben,
[[email protected] ~]$ sed '4,9 s/danger/safety/' testfile.txt
Beispiel :12) Fügen Sie eine Zeile nach/vor der übereinstimmenden Suche hinzu
Um nach jeder Musterübereinstimmung eine neue Zeile mit etwas Inhalt hinzuzufügen, verwenden Sie die Option 'a' ,
[[email protected] ~]$ sed '/danger/a "This is new line with text after match"' testfile.txt
Um vor jeder Musterübereinstimmung eine neue Zeile mit etwas Inhalt hinzuzufügen, verwenden Sie die Option „i“,
[[email protected] ~]$ sed '/danger/i "This is new line with text before match" ' testfile.txt
Beispiel :13) Ändern Sie eine ganze Zeile mit übereinstimmendem Muster
Um eine ganze Zeile in eine neue Zeile zu ändern, wenn ein Suchmuster übereinstimmt, müssen wir die Option „c“ mit sed verwenden,
[[email protected] ~]$ sed '/danger/c "This will be the new line" ' testfile.txt
Wenn also das Muster mit „Gefahr“ übereinstimmt, wird die gesamte Zeile in die erwähnte Zeile geändert.
Erweiterte Optionen mit sed
Bis jetzt haben wir nur einfache Ausdrücke mit sed verwendet, jetzt werden wir einige fortgeschrittene Verwendungen von sed mit Regex besprechen,
Beispiel :14) Ausführen mehrerer sed-Befehle
Wenn wir mehrere sed-Ausdrücke ausführen müssen, können wir die Option „e“ verwenden, um die sed-Befehle zu verketten,
[[email protected] ~]$ sed -e 's/danger/safety/g' -e 's/hate/love/' testfile.txt
Beispiel :15) Erstellen einer Sicherungskopie vor dem Bearbeiten einer Datei
Um eine Sicherungskopie einer Datei zu erstellen, bevor wir sie bearbeiten, verwenden Sie die Option „-i.bak“,
[[email protected] ~]$ sed -i.bak -e 's/danger/safety/g' testfile.txt
Dadurch wird eine Sicherungskopie der Datei mit der Erweiterung .bak erstellt. Sie können auch eine andere Erweiterung verwenden, wenn Sie möchten.
Beispiel :16) Löschen Sie eine Dateizeile, die mit einem Muster beginnt und endet
Um eine Zeile zu löschen, die mit einer bestimmten Zeichenfolge beginnt und mit einer anderen Zeichenfolge endet, verwenden Sie
[[email protected] ~]$ sed -e 's/^danger.*stops$//g' testfile.txt
Dadurch wird die Zeile mit „danger“ am Anfang und „stops“ am Ende gelöscht und es kann eine beliebige Anzahl von Wörtern dazwischen stehen, „.*“ definiert diesen Teil.
Beispiel :17) Zeilen anhängen
Um Inhalt vor jeder Zeile mit sed ®ex hinzuzufügen, verwenden Sie
[[email protected] ~]$ sed -e 's/.*/testing sed &/' testfile.txt
Also steht jetzt vor jeder Zeile „testing sed“.
Beispiel :18) Entfernen aller kommentierten Zeilen und leeren Zeilen
Um alle kommentierten Zeilen zu entfernen, d. h. Zeilen mit # und alle leeren Zeilen, verwenden Sie
[[email protected] ~]$ sed -e 's/#.*//;/^$/d' testfile.txt
Um nur kommentierte Zeilen zu entfernen, verwenden Sie
[[email protected] ~]$ sed -e 's/#.*//' testfile.txt
Beispiel :19) Holen Sie sich eine Liste aller Benutzernamen aus /etc/passwd
Um die Liste aller Benutzernamen aus der Datei /etc/passwd zu erhalten, verwenden Sie
[[email protected] ~]$ sed 's/\([^:]*\).*/\1/' /etc/passwd
eine vollständige Liste aller Benutzernamen wird als Ausgabe auf dem Bildschirm generiert.
Beispiel :20) Verhindert das Überschreiben von Systemverknüpfungen mit dem Befehl sed
Es ist bekannt, dass der Befehl „sed -i“ Systemverknüpfungen entfernt und anstelle der Verknüpfungsdatei nur reguläre Dateien erstellt. Um eine solche Situation zu vermeiden und ‘sed -i’ zu verhindern ‘ Um die Links nicht zu zerstören, verwenden Sie ‘–follow-symklinks ‘ Optionen mit dem ausgeführten Befehl.
Nehmen wir an, ich möchte SELinux auf CentOS- oder RHEL-Servern deaktivieren
[[email protected] ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
Dies waren einige Beispiele, um sed zu zeigen, wir können diese Referenz verwenden, um sie nach Bedarf einzusetzen. Wenn Sie Fragen zu diesem oder einem anderen Artikel haben, teilen Sie uns dies bitte mit.
Auch lesen : 14 SCP-Befehlsbeispiele zum sicheren Übertragen von Dateien unter Linux