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

10 Sed (Stream Editor)-Befehlsbeispiele

Sed ist ein Stream-Editor in einem UNIX-ähnlichen Betriebssystem, das zum Filtern und Transformieren von Text verwendet wird. Sed leitet sich ursprünglich vom Grundzeilen-Editor „ed“ ab, einem Editor, den Sie auf jedem Unix-System finden, aber wegen seiner schwierigen Benutzeroberfläche selten verwendet werden.

Wie funktioniert sed?

Da sed ein Stream-Editor ist, arbeitet er an einem Datenstrom, den er von stdin erhält, z. B. über eine Pipe, und schreibt seine Ergebnisse als Datenstrom auf stdout (häufig Desktop-Bildschirm). Wir können diese Ausgabe in eine Datei umleiten. Sed ändert normalerweise keine ursprüngliche Eingabedatei; Stattdessen können wir den Inhalt unserer Datei durch eine Pipe senden, damit er von sed verarbeitet wird. Das bedeutet, dass wir keine Datei mit den Daten, die Sie ändern möchten, auf der Festplatte haben müssen. Dies ist besonders nützlich, wenn Sie Daten haben, die aus einem anderen Prozess stammen und nicht bereits in eine Datei geschrieben wurden.

Syntax von sed

# sed [option] commands [input-file]

In diesem Beitrag werden wir einige praktische Beispiele des sed-Befehls besprechen, wir werden viele sed-Operationen mit der Datei ‚passwd‘ durchführen, also kopieren Sie zuerst die Datei ‚/etc/passwd‘ in den Ordner /tmp.

# cp /etc/passwd /tmp/

Beispiel 1:Löschen aller Zeilen mit sed

# cat /tmp/passwd | sed 'd'

Der obige Befehl schickte den gesamten Inhalt der Datei /tmp/passwd durch eine Pipe an sed. Denken Sie daran, dass die Datei /tmp/passwd überhaupt nicht verändert wurde. Sed hat nur den Inhalt der Datei gelesen und wir haben ihm nicht gesagt, dass er in die Datei schreiben soll, sondern nur daraus lesen. Die Ergebnisse der Bearbeitungsbefehle in jeder Zeile werden auf der Standardausgabe ausgegeben. In diesem Fall wurde nichts auf dem Bildschirm gedruckt, weil wir mit Option „d“ jede Zeile gelöscht haben.

Beispiel 2:Aufruf von sed mit der Option „-e“ (das Skript zu den auszuführenden Befehlen hinzufügen)

Anstatt sed durch Senden einer Datei über eine Pipe aufzurufen, können wir sed anweisen, Daten aus einer Datei zu lesen, wie im folgenden Beispiel gezeigt.

# sed -e 'd' /tmp/passwd
#

Der Aufruf von sed auf diese Weise definiert den Bearbeitungsbefehl explizit als ein sed-Skript, das auf der Eingabedatei /tmp/passwd ausgeführt werden soll. Das Skript ist hier einfach ein Ein-Zeichen-Bearbeitungsbefehl, aber es könnte viel länger sein.

Wir können auch die Standardausgabe des sed-Befehls in eine Datei umleiten.

# sed -e 'd' /tmp/passwd > /tmp/new-passwd

Beispiel 3:Zeilen mit sed drucken (Flag -n &Befehl p)

Das '-n'-Flag deaktiviert das automatische Drucken, sodass sed stattdessen nur dann Zeilen druckt, wenn es ausdrücklich mit dem 'p'-Befehl dazu aufgefordert wird.

# cat /tmp/passwd | sed 'p' | head -5
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Wie wir oben sehen, druckt sed doppelte Zeilen, wenn wir den Bearbeitungsbefehl „p“ ohne das Flag „-n“ angeben. Um eindeutige Zeilen anzuzeigen, verwenden Sie das Flag '-n' mit dem Befehl p in sed. Beispiele sind unten gezeigt:

# cat /tmp/passwd | sed -n 'p' | head -5
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

Beispiel 4:Bearbeiten der Quelldatei mit der Option „-i“

Der Sed-Befehl bearbeitet zu unserer Sicherheit standardmäßig nicht die Original- oder Quelldatei, aber mit der Option „-i“ kann die Quelldatei bearbeitet werden.

# sed -i '1d' /tmp/passwd

Der obige Befehl löscht die erste Zeile der Quelldatei /tmp/passwd.

Beispiel 5:Erstellen Sie vor der Bearbeitung eine Sicherungskopie der Quelldatei

Wenn wir die Option „-i“ im Befehl sed verwenden, wird dies sehr riskant, da die Quelldatei direkt bearbeitet wird. Daher ist es besser, vor der Bearbeitung eine Sicherungskopie der Quelldatei zu erstellen, das Beispiel ist unten gezeigt.

# sed -i.bak '1d' /tmp/passwd
# ls -l /tmp/passwd*
-rw-r--r-- 1 root root 2229 Nov 24 22:36 /tmp/passwd
-rw-r--r-- 1 root root 2261 Nov 24 22:35 /tmp/passwd.bak

Im obigen sed-Befehl wird die erste Zeile der Datei /tmp/passwd gelöscht, aber bevor dieser sed-Befehl die Sicherung von /tmp/passwd als /tmp/passwd.bak erstellt.

Beispiel 6:Löschen der Zeilen durch Angabe des Bereichs.

Löschen der ersten 5 Zeilen der Datei /tmp/passwd.

# cat /tmp/passwd | sed '1,5d'

Beispiel 7:Leerzeilen einer Datei löschen

# cat /tmp/detail.txt 
245
678

linux
unix

suse

In der Datei details.txt haben wir zwei leere Zeilen, verwenden Sie den folgenden Befehl, um leere Zeilen zu löschen.

# sed '/^$/d' /tmp/detail.txt
245
678
linux
unix
suse

Beispiel 8:Löschen der Zeilen mit den Strings

Angenommen, wir möchten die Zeile aus der Datei /tmp/passwd löschen, die das Wort „Spiele“ enthält.

# sed '/games/d' /tmp/passwd

Beispiel 9:Suchen und Ersetzen von Zeichenfolgen in der Datei

Angenommen, Sie möchten „root“ durch „Admin“ ersetzen, das Beispiel ist unten gezeigt:

# sed 's/root/Admin/' /tmp/passwd

Es ist sehr wichtig zu beachten, dass sed nur das erste Vorkommen in einer Zeile ersetzt. Wenn die Zeichenfolge „root“ mehr als einmal in einer Zeile vorkommt, wird nur die erste Übereinstimmung ersetzt. Um jede Zeichenfolge in der Datei durch die neue zu ersetzen, anstatt nur das erste Vorkommen, um eine globale Ersetzung vorzunehmen, fügen Sie wie unten gezeigt einen Buchstaben „g“ am Ende des Befehls hinzu:

# sed 's/root/Admin/g' /tmp/passwd

Beispiel 10:Mehrfachersetzung mit Option -e

Angenommen, wir möchten die Zeichenfolge „root“ durch „Admin“ und die Zeichenfolge „bash“ durch „sh“ ersetzen. Beispiel ist unten gezeigt:

# cat /tmp/passwd | sed -e 's/root/Admin/g' -e 's/bash/sh/g'


Linux
  1. Beispiele für Linux-Tail-Befehle

  2. ln-Befehlsbeispiele in Linux

  3. Beispiele für gzip-Befehle unter Linux

  4. mehr Befehlsbeispiele in Linux

  5. file Befehlsbeispiele in Linux

Linux-WC-Befehl mit Beispielen

Linux cat-Befehlsbeispiele

Linux gzip-Befehlsbeispiele

dumpe2fs-Befehlsbeispiele in Linux

fsck-Befehlsbeispiele unter Linux

mkfs-Befehlsbeispiele in Linux