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

Einführung in sed (Stream Editor):Nützliche Beispiele für sed-Befehle

Einführung in den sed-Editor

Der Begriff sed steht für Stream-Editor . Sed kann seine Eingaben von Standard In übernehmen, die angeforderten Änderungen auf den Stream anwenden und die Ergebnisse automatisch auf Standard Out übertragen. Die sed-Syntax ermöglicht die Angabe einer Eingabedatei auf der Befehlszeile.

Sie müssen nicht mit dem sed-Editor interagieren, während er läuft; daher wurde es auch als Batch-Editor bezeichnet. Dies steht im Gegensatz zu Editoren wie vi und ed, die interaktiv sind. Da sed keine Interaktion erfordert, können Sie sed-Befehle in ein Skript einfügen. Sie können die Skriptdatei aufrufen und für die Datendatei ausführen, um sich wiederholende Bearbeitungsvorgänge durchzuführen.

Befehlsformat

Das Folgende zeigt die Syntax für den Befehl sed:

# sed [options] 'action [args]' files [ > outfile]

Der sed-Editor ist in der Lage, Textmuster zu ersetzen und Textmuster zu löschen, indem er die Syntax regulärer Ausdrücke verwendet. Dies sind dieselben regulären Ausdruckszeichen, die von grep verwendet werden.

Der Befehl sed bietet Funktionen, die eine Erweiterung der interaktiven Textbearbeitung darstellen. Wenn Sie Textstrings in einer großen Anzahl von Dateien suchen und ersetzen müssen, ist sed am nützlichsten.

Bearbeitungsbefehle

Der sed-Editor verwendet Bearbeitungsbefehle (siehe Tabelle), die denen ähneln, die Sie für vi und ed verwenden würden.

Befehl Funktion
d Löscht Zeile(n)
p Zeile(n) drucken
r Liest eine Datei
s Ersetzt eine Zeichenfolge durch eine andere
w Schreibt in eine Datei

Der Befehl sed hat zwei Optionen:

Option Funktion
-n Unterdrückt die Standardausgabe
-f Liest sed-Befehle aus einer Skriptdatei

In den Beispielen verwendete Beispieldaten

Die folgenden Beispiele führen sed-Befehle für die Datei „data.txt“ aus. Der Inhalt der Datei data.txt ist wie folgt.

# cat data.txt
northwest	NW	Joel Craig	    10
western  	WE	Sharon Kelly	40
southwest	SW	Chris Foster	33
southern 	SO	May Chin	    45
southeast	SE	Derek Johnson	3
eastern  	EA	Susan Beal	    34
northeast	NE	TJ Nichols	    67
north    	NO	Val Shultz	    91
central  	CT	Sheri Watson	44

Mit sed Text drucken

Beispiel 1:Zeilenbereich drucken

Das folgende Beispiel zeigt die Verwendung des Befehls p (print), der eine Reihe von Zeilen auf stdout ausgibt. Der Bereich wird durch eine Startadresse gefolgt von einem Komma und dann der Endadresse angegeben. Die Standardausgabe von sed ist jede Zeile, die es liest. Verwenden Sie die Option -n, um die Standardausgabe zu unterdrücken.

# sed -n '3,5p' data.txt 
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3

Beispiel 2:Zeilen drucken, die ein bestimmtes Muster enthalten

Der folgende Befehl druckt alle Zeilen mit dem Muster West darin. Verwenden Sie den Schrägstrich (/), um den regulären Ausdruck abzugrenzen.

# sed -n '/west/p' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33

Beispiel 3:Druckzeile mit mehreren Mustern

Der folgende Befehl druckt die erste Zeile mit dem Muster West bis einschließlich der nächsten Zeile mit dem Muster Süd.

# sed -n '/west/,/southern/p' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
southern        SO      May Chin            45

Beispiel 4 :Zeile mit Muster und alle Zeilen danach drucken

Der folgende Befehl gibt die erste Zeile mit dem Muster Chris bis zur letzten Zeile der Datei aus.

# sed -n '/Chris/,$p' data.txt 
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Beispiel 5:Funktionalität ähnlich wie bei grep

Das Muster kann die von grep verwendeten regulären Ausdruckszeichen enthalten. Das folgende Beispiel gibt alle Zeilen aus, die mit einem s beginnen und mit einer 5 enden.

# sed -n '/^s.*5$/p' data.txt 
southern        SO      May Chin            45

Sed zum Ersetzen von Text verwenden

Befehl Beispiel Aktion bearbeiten
s sed s/x/y/option Suchen und ersetzen. Das Suchmuster x wird durch das Muster y ersetzt. Das Such- und das Ersetzungsmuster sind in den meisten Fällen reguläre Ausdrücke, und das Such- und Ersetzungsverhalten kann durch verschiedene Optionen beeinflusst werden.
y sed y/abc/xyz/ Ersetze jedes Zeichen aus dem Satz von Quellzeichen durch das Zeichen, das dieselbe Position in dem Satz von Zielzeichen hat.

Beispiel 1:Suche und ersetze ein bestimmtes Muster

Die sed s Der Befehl ermöglicht eine Such- und Ersetzungsoperation für den Text. Der Befehl verwendet eine Mustersuche und eine wörtliche Zeichenfolgenersetzung. Die Zeichen der Ersetzungszeichenfolge werden wörtlich genommen, ohne Metazeichenerweiterung.

# sed 's/3/X/' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        X3
southern        SO      May Chin            45
southeast       SE      Derek Johnson       X
eastern         EA      Susan Beal          X4
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Der Befehl sed prüft jede Zeile der Datei und ersetzt das erste Vorkommen der alten Zeichenfolge durch die neue Zeichenfolge. Nachfolgende Vorkommen der alten Zeichenfolge innerhalb derselben Zeile bleiben unverändert.

Beispiel 2:Globales Suchen und Ersetzen eines bestimmten Musters

Das folgende Beispiel zeigt das g (global) Befehl mit den s (Suchen und Ersetzen) Befehl und ersetzt alle Vorkommen der alten Zeichenfolge durch die neue Zeichenfolge.

# sed 's/3/X/g' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        XX
southern        SO      May Chin            45
southeast       SE      Derek Johnson       X
eastern         EA      Susan Beal          X4
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Beispiel 3 :Suchen und Ersetzen mit Suchmuster, das in der Ersetzung enthalten ist

Gelegentlich wird bei einer Suche und Ersetzung die alte Zeichenfolge Teil der neuen Ersetzungszeichenfolge, was Sie erreichen können, indem Sie ein &(kaufmännisches Und) in die Ersetzungszeichenfolge einfügen. Die Position des &bestimmt die Position der alten Zeichenfolge in der Ersatzzeichenfolge.

Das Ziel der folgenden Beispiele ist es, einen Befehl zu schreiben, der nach allen Zeilen sucht, die im letzten Feld mit einer einzelnen Ziffer enden, und die einzelne Ziffer durch die einstellige Zahl plus die Zeichenfolge Single Digit ersetzt.

Um die Zeilen mit einstelligen Zahlen im letzten Feld richtig zu identifizieren, betrachten Sie den folgenden sed-Befehl. Tabulatoren trennen die Felder mit jeder Zeile.

sed -n '/    [0-9]$/p' data.txt 
southeast       SE      Derek Johnson       3

Der folgende Befehl sucht nach allen Zeilen, die im letzten Feld mit einer einzelnen Ziffer enden, und ersetzt die einzelne Ziffer durch die einstellige Zahl plus die Zeichenfolge Single Digit.

# sed 's/    [0-9]$/& Single Digit/' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3 Single Digit
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Mit sed Text löschen

Beispiel 1:Zeilenbereich löschen

Der folgende Befehl löscht die Zeilen 4 bis 8 aus der Ausgabe.

# sed '4,8d' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
central         CT      Sheri Watson        44

Beispiel 2:Zeilen löschen, die ein bestimmtes Muster enthalten

Der folgende Befehl löscht jede Zeile, die das Muster West enthält.

# sed '/west/d' data.txt 
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Beispiel 3

Der folgende Befehl löscht jede Zeile, die mit dem Muster west.

beginnt
# sed '/^west/d' data.txt 
northwest       NW      Joel Craig          10
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Beispiel 4

Der folgende Befehl löscht den Zeilenbereich beginnend mit der ersten Zeile, die das Muster south enthält, bis zur nächsten Zeile der Datei, die north enthält.

# sed '/south/,/north/d' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Zusätzliche sed-Funktionalität – Bearbeitungsbefehle

Zusätzliche sed-Editor-Befehle sind in der folgenden Tabelle aufgeführt.

Befehl Funktion
ein Hängt Text an
c Ändert Text in der aktuellen Zeile durch neuen Text
ich Fügt Text über der aktuellen Zeile ein

Platzieren mehrerer Bearbeitungen in einem einzigen sed-Befehl

Es gibt Zeiten, in denen Sie mehrere Bearbeitungen an der Datei vornehmen möchten. Anstatt mehrere sed-Befehle zu verwenden, können Sie die Option -e verwenden, um die Änderungen in derselben Befehlszeile zu platzieren. Die Bearbeitungen werden in der von Ihnen angegebenen Reihenfolge durchgeführt.

Beispiel 1

Löschen Sie Zeilen sorgfältig. Sie können eine Textzeile bearbeiten und anschließend diese Textzeile aus der Ausgabe entfernen. Dies geschieht im folgenden Beispiel mit Zeile 1 der Eingabedatei.

# sed -e 's/north/North/' -e '1,4d' data.txt 
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
Northeast       NE      TJ Nichols          67
North           NO      Val Shultz          91
central         CT      Sheri Watson        44


Linux
  1. 12 nützliche Wget-Befehlsbeispiele unter Linux

  2. ls-Befehl unter Linux:17 nützliche Beispiele erklärt

  3. Nützliche Beispiele für den Docker-ps-Befehl

  4. 5 Nützliche Beispiele für den Befehl firewall-cmd

  5. 10 Sed (Stream Editor)-Befehlsbeispiele

Nützliche Wget-Befehlsbeispiele im Linux-System

15 Nützliche Beispiele für Touch-Befehle im Linux-System

Die 50 praktischen Beispiele des SED-Befehls in Linux

9 Nützliche Beispiele für Touch-Befehle unter Linux

10 Nützliche Beispiele für den Sort-Befehl in Linux

12 Nützliche Beispiele für Linux-Datumsbefehle