Verwendung des Linux-Befehls sed

Verwendung des Linux-Befehls sed

1. Funktionseinführung

sed (Stream EDitor) ist ein Stream-Dateieditor, der den Inhalt zeilenweise verarbeitet. Während der Verarbeitung wird die aktuell verarbeitete Zeile in einem temporären Puffer gespeichert, der als „Pattern Space“ bezeichnet wird. Anschließend wird der Inhalt des Puffers mit dem Befehl sed verarbeitet. Nachdem die Verarbeitung abgeschlossen ist, wird der Inhalt des Puffers an den Bildschirm gesendet und anschließend die nächste Zeile bis zum Ende der Datei verarbeitet. Der Dateiinhalt wird nicht geändert, sofern nicht die Option -i verwendet wird. sed wird hauptsächlich verwendet, um eine oder mehrere Dateien zu bearbeiten, sich wiederholende Vorgänge an Dateien zu vereinfachen oder Konvertierungsprogramme zu schreiben.

Die Funktion von sed ist ähnlich der von awk, der Unterschied besteht jedoch darin, dass sed einfacher ist und seine Spaltenverarbeitungsfunktion weniger leistungsfähig ist, während awk komplexer ist und seine Spaltenverarbeitungsfunktion leistungsfähiger ist.

2. Befehlsformat

sed [OPTION]… {nur Skript, wenn kein anderes Skript vorhanden ist} [Eingabedatei]…

OPTION ist die Befehlsoption, script-only-if-no-other-script ist die Verarbeitungsaktion, wobei mit -e mehrere angegeben werden können, und input-file ist die Eingabedatei, wobei mehrere angegeben werden können.

3. Option Beschreibung

Optionen:
-n, --quiet, --silent: Stillen Modus verwenden. Bei der allgemeinen Verwendung von sed werden im Allgemeinen alle Daten von STDIN auf dem Terminal ausgegeben. Wenn -n hinzugefügt wird, werden nur die Zeilen aufgelistet, die von sed speziell verarbeitet wurden.
-e <Skript>,--expression=<Skript>: Gibt die Sed-Aktion an. Mehrere Aktionen können durch mehrere -e angegeben werden.
-f <Skriptdatei>, --file=<Skriptdatei>: schreibt die Sed-Aktion direkt in eine Datei, -f Dateiname kann die Sed-Aktion im Dateinamen ausführen;
-r, --regexp-extended: sed unterstützt erweiterte reguläre Ausdrücke (der Standard sind grundlegende reguläre Ausdrücke).
-i: Ändert den Inhalt der gelesenen Datei direkt, anstatt ihn auf dem Terminal auszugeben.
--help: Hilfe anzeigen.
--version: Version anzeigen.

Aktionsbeschreibung: [n1[,n2]]Funktion
n1, n2: existiert möglicherweise nicht, steht im Allgemeinen für „Wählen Sie die Anzahl der Zeilen aus, um die Aktion auszuführen“. Wenn meine Aktion beispielsweise zwischen 10 und 20 Zeilen ausgeführt werden muss, schreiben Sie „10,20 Aktionsverhalten“.

Funktion:
a: Hinzugefügt, auf a kann eine Zeichenfolge folgen, und diese Zeichenfolgen erscheinen in einer neuen Zeile (der nächsten Zeile nach der aktuellen)~
c: Ersetzung, auf c kann ein String folgen, der die Zeilen zwischen n1 und n2 ersetzen kann!
d: löschen. Da es „löschen“ bedeutet, folgt nach d normalerweise nichts.
i: Einfügen, auf i kann eine Zeichenfolge folgen, und diese Zeichenfolgen erscheinen in einer neuen Zeile (der vorherigen Zeile der aktuellen);
p: Drucken, d. h. ausgewählte Daten ausdrucken. Normalerweise wird p mit dem Parameter sed -n~ ausgeführt.
s: Ersetzung, normalerweise kann diese s-Aktion mit regulären Ausdrücken verwendet werden! Beispielsweise 1,20s/alt/neu/g.

4. Typische Beispiele

4.1 Zeilenlöschvorgang

(1) Listen Sie den Inhalt von /etc/passwd auf und drucken Sie die Zeilennummern. Löschen Sie gleichzeitig die Zeilen 2 bis 5.

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2,5d'
 root:x:0:0:root:/root:/bin/bash
 sync:x:5:0:sync:/sbin:/bin/sync
 Herunterfahren: x: 6: 0: Herunterfahren: / sbin: / sbin / Herunterfahren
.....(Später weggelassen).....

Hinweis: Ursprünglich sollten Sie sed -e eingeben. Wenn nur eine Aktion vorhanden ist, ist es auch ohne -e möglich, wenn jedoch mehr als eine Aktion vorhanden ist, müssen Sie die Option -e verwenden, um die Aktion anzugeben. Beachten Sie auch, dass die auf sed folgenden Aktionen in zwei einfache Anführungszeichen eingeschlossen werden müssen.

(2) Zeile 2 einfach streichen.

nl /etc/passwd | sed '2d'

(3) Die drittletzte Zeile streichen

nl /etc/passwd | sed '3,$d'

4.2 Zeilenoperation hinzufügen

(1) Fügen Sie nach der zweiten Zeile „Ich trinke gerne Tee“ hinzu.

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2a Ich trinke gerne Tee'
 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
Ich trinke gern Tee
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(Später weggelassen).....

(2) Wenn Sie es vor der zweiten Zeile hinzufügen möchten.

nl /etc/passwd | sed '2i trinke Tee'
//oder nl /etc/passwd | sed '1a trinke Tee'

(3) Füge nach der zweiten Zeile zwei Zeilen hinzu: „Ich trinke gerne Tee“ und „Ich trinke gerne Bier“.

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2a Ich trinke gerne Tee\nIch trinke gerne Bier'
  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
Ich trinke gern Tee
Ich trinke gerne Bier
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
…(später weggelassen)…

Alternativ können Sie die einzelnen Zeilen durch einen Backslash \ trennen und dann wie folgt einen mehrzeiligen Befehl in die Befehlszeile eingeben:

[b3335@MIC ~]$ nl -n ln /etc/passwd | sed '2a Ich trinke gerne Tee\
> Ich trinke gern Bier‘

4.3 Leitungswechselvorgang

(1) Der Inhalt der Zeilen 2-5 wird durch „Nr. 2-5“ ersetzt.

[b3335@MIC ~]$ nl -nln /etc/passwd | sed '2,5c Nr. 2-5 Nummer'
  root:x:0:0:root:/root:/bin/bash
Nr. 2-5 Nummer
  sync:x:5:0:sync:/sbin:/bin/sync
.....(Später weggelassen).....

4.4 Zeilendruck auswählen

(1) Listen Sie nur die Zeilen 5-7 in der Datei /etc/passwd auf.

[root@www ~]# nl -nln /etc/passwd | sed -n '5,7p'
 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 sync:x:5:0:sync:/sbin:/bin/sync
 Herunterfahren: x: 6: 0: Herunterfahren: / sbin: / sbin / Herunterfahren

4.5 Daten suchen und zugehörige Vorgänge ausführen

(1) Suche und Anzeige von Daten

Durchsuche /etc/passwd nach Zeilen mit dem Schlüsselwort root und gib diese aus.

[b3335@MIC ~]$ nl /etc/passwd | sed -n '/root/p'
 root:x:0:0:root:/root:/bin/bash
 Operator:x:11:0:Operator:/root:/sbin/nologin

(2) Daten suchen und löschen Löschen Sie alle Zeilen, die root in /etc/passwd enthalten und geben Sie die restlichen Zeilen aus.

[b3335@MIC ~]$ nl /etc/passwd | sed '/root/d'
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
 bin:x:2:2:bin:/bin:/bin/sh
…(unten ignorieren)…

Wenn Sie die passende Zeichenfolge löschen möchten, verwenden Sie den folgenden Befehl:

[b3335@MIC ~]$ nl /etc/passwd | sed 's/root//g'

(3) Suchen und Ersetzen von Daten Zusätzlich zur Verarbeitung ganzer Zeilen kann sed auch Zeileneinheiten verwenden, um Teildaten zu suchen und zu ersetzen. Grundsätzlich sind die Such- und Ersetzungsfunktionen von sed denen von vi recht ähnlich! Er ist ungefähr so:

sed 's/ersetzte Zeichenfolge/neue Zeichenfolge/g'

(4) Daten suchen und Befehle ausführen Durchsuchen Sie /etc/passwd, finden Sie die Zeile, die root entspricht, und führen Sie den Befehlssatz in den geschweiften Klammern aus. Jeder Befehl ist durch ein Semikolon getrennt. Ersetzen Sie hier bash durch blueshell und geben Sie dann diese Zeile aus:

nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
 root:x:0:0:root:/root:/bin/blueshell

Wenn nur das erste bash-Schlüsselwort in /etc/passwd durch blueshell ersetzt wird, beenden Sie

nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}' 
root:x:0:0:root:/root:/bin/blueshell

4.6 Bearbeiten Sie einen sed-Befehl, um die Daten von der dritten Zeile bis zum Ende von /etc/passwd zu löschen und bash durch blueshell zu ersetzen

nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
 root:x:0:0:root:/root:/bin/blueshell
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh

-e bedeutet Mehrpunktbearbeitung. Der erste Bearbeitungsbefehl löscht die Daten von der dritten Zeile bis zum Ende von /etc/passwd. Der zweite Befehl sucht nach bash und ersetzt es durch blueshell.

4.7 Dateien direkt ändern

sed kann den Inhalt von Dateien direkt ändern, ohne Pipe-Befehle oder Datenstromumleitung zu verwenden! Da durch diese Aktion jedoch die Originaldatei direkt geändert wird, verwenden Sie die Systemkonfiguration nicht einfach zu Testzwecken und seien Sie bei der Verwendung vorsichtig. Lassen Sie uns die heruntergeladene Datei regular_express.txt zum Testen verwenden!

Verwenden Sie sed, um jede Zeile in regular_express.txt, die mit . endet, durch ! zu ersetzen.

[root@www ~]# sed -i 's/\.$/!/g' regular_express.txt

Verwenden Sie sed, um „# Dies ist ein Test“ direkt zur letzten Zeile von regular_express.txt hinzuzufügen.

[root@www ~]# sed -i '$a # Dies ist ein Test' regular_express.txt

Da $ die letzte Zeile darstellt und die Aktion von a das Hinzufügen ist, wird am Ende der Datei „# Dies ist ein Test“ hinzugefügt.

Mit der Option -i von sed können Sie den Dateiinhalt direkt ändern, was sehr hilfreich ist! Wenn Sie beispielsweise eine Datei mit 1 Million Zeilen haben und in Zeile 100 Text hinzufügen möchten, kann die Verwendung von vim Sie in den Wahnsinn treiben! Weil die Datei zu groß ist! Was ist dann zu tun? Benutzen Sie einfach sed! Da sed direkt ändern/ersetzen kann, müssen Sie zum Vornehmen von Revisionen nicht einmal vim verwenden!

Oben finden Sie detaillierte Informationen zur Verwendung des Linux-Befehls sed. Weitere Informationen zum Linux-Befehl sed finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detailliertes Tutorial zur Verwendung des Befehls xargs unter Linux
  • Verwendung des Linux-Befehls tr
  • Verwendung des Linux-Befehls ipcs
  • Verwendung des Linux-Befehls „sar“ und Analyse von Codebeispielen
  • Verwendung des Linux-Befehls ls
  • Verwendung des Linux-Lesebefehls
  • Verwendung des Linux-Befehls usermod
  • Verwendung des Linux-Befehls passwd
  • Detaillierte Erläuterung der Verwendung des Linux-Zeitbefehls
  • Verwendung des Linux-Befehls ln
  • Verwendung des Linux-Telnet-Befehls

<<:  So verkleinern Sie die Protokolldatei in MYSQL SERVER

>>:  Mysql | Detaillierte Erklärung der Fuzzy-Abfrage mit Platzhaltern (wie, %, _)

Artikel empfehlen

Detaillierte Erläuterung der Deep Copy und Shallow Copy im JS-Variablenspeicher

Inhaltsverzeichnis Variabler Typ und Speicherplat...

Wachstumserfahrung eines Webdesigners

<br />Vorab muss ich sagen, dass ich ein abs...

MySQL 5.6.33 Installations- und Konfigurations-Tutorial unter Linux

In diesem Tutorial erfahren Sie alles über die In...

Tutorial zum Anzeigen und Ändern von MySQL-Zeichensätzen

1. Überprüfen Sie den Zeichensatz 1. Überprüfen S...

So verwenden Sie Axios-Anfragen im Vue-Projekt

Inhaltsverzeichnis 1. Installation 2. Es gibt kei...

32 typische spalten-/rasterbasierte Websites

Wenn Sie nach Inspiration für spaltenbasiertes Web...

So passen Sie Docker-Images mit Dockerfile an

Anpassen von Bildern mit Dockerfile Unter Bildanp...

Der Prozess des Aufbaus einer Lampenarchitektur durch einen Docker-Container

Inhaltsverzeichnis 1. Ziehen Sie das Centos-Image...

Detaillierte Erklärung der Meta-Tags und ihrer Verwendung in HTML

Ich werde keine weitere Zeit mit Unsinnsgerede ve...