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 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:
|
<<: So verkleinern Sie die Protokolldatei in MYSQL SERVER
>>: Mysql | Detaillierte Erklärung der Fuzzy-Abfrage mit Platzhaltern (wie, %, _)
Inhaltsverzeichnis Startoptionen Befehlszeile Lan...
Geben Sie der Zeit Zeit und lassen Sie die Vergan...
Inhaltsverzeichnis Variabler Typ und Speicherplat...
<br />Vorab muss ich sagen, dass ich ein abs...
In diesem Tutorial erfahren Sie alles über die In...
Das sogenannte Favicon, die Abkürzung für Favorite...
1. Überprüfen Sie den Zeichensatz 1. Überprüfen S...
Inhaltsverzeichnis 1. Installation 2. Es gibt kei...
Wie unten dargestellt: Kopieren Sie die Dateien d...
Wenn Sie nach Inspiration für spaltenbasiertes Web...
Schauen wir uns zunächst meinen Fehlercode an. ht...
Anpassen von Bildern mit Dockerfile Unter Bildanp...
Inhaltsverzeichnis 1. Ziehen Sie das Centos-Image...
Ich werde keine weitere Zeit mit Unsinnsgerede ve...
Um Installationszeit zu sparen, habe ich zum Star...