Verwendung des SED-Befehls unter Linux | BEISPIELE

Linux ist ein System voller Befehle, bei denen jeder eine wesentliche Rolle für das Verhalten bestimmter Aufgaben spielt, unabhängig davon, ob es sich um Benutzer-, Objekt- oder Supportverwaltung handelt. Jeder Befehl ist an Linux beteiligt, und einer dieser Befehle ist Sed Wir werden in EinWie.com im Detail sprechen.

 

Was ist der Befehl sed unter Linux?
Der Befehl sed ist buchstäblich ein Flusseditor, mit dem wir Arbeiten am Text mit Grundfunktionen in einem Eingabefluss entweder aus einer Datei oder gegebenenfalls aus einer Pipeline ändern können.

 

Im Gegensatz zu anderen Texteditoren ist es mit sed möglich, Text in einer Pipeline zu filtern, wenn wir über ausgewählten Inhalt gehen.

 

 

Vorteil
Die Vorteile der Verwendung von sed unter Linux sind:

  • Wir können Text auswählen
  • Wir können Text ersetzen
  • Fügen Sie dem Text Zeilen hinzu
  • Wir können Zeilen aus dem Text entfernen
  • Ermöglicht das Ändern oder Beibehalten einer Originaldatei

 

 

Die allgemeine Syntax für die Verwendung von sed lautet wie folgt:

 sed OPTIONEN ... [SCRIPT] [INPUT_FILE ...] 

Wir werden einige Möglichkeiten lernen, diesen Befehl unter Linux zu verwenden.

 

 

1. Verwendung des SED-Befehls unter Linux

 

Grundlegende Verwendung von sed
In diesem Beispiel verwenden wir “echo”, um zu sehen, wie der Befehl sed einen Teil des eingegebenen Textes ersetzen kann. Wir geben Folgendes ein:

 echo solvitic | sed 's / vitic / vetic /' 

In diesem Fall fordern wir sed auf, das Wort “vitic” durch “vetic” zu ersetzen. Wenn Sie die Eingabetaste drücken, ist dies das Ergebnis:

 

use-command-SED-on-Linux-1.png

 

Wir sehen, dass die Änderung automatisch erfolgt.

 

2. Text mit dem Befehl SED Linux auswählen

 

Schritt 1

In diesem Fall haben wir eine Textdatei, die auf dem Desktop gehostet wird:

 

use-command-SED-on-Linux-2.png

 

Jetzt werden wir die folgende Zeile verwenden:

 weniger EinWie.com.txt 
Schritt 2

Wenn Sie die Eingabetaste drücken, ist dies das Ergebnis:

 

use-command-SED-on-Linux-3.png

 

Mit sed ist es möglich, einige Zeilen der Datei auszuwählen. Dazu müssen wir die Anfangs- und Endzeilen des auszuwählenden Bereichs angeben. Wenn wir beispielsweise die Zeilen zwei bis sieben extrahieren möchten, führen wir Folgendes aus:

 sed -n '2,7p' EinWie.com.txt 
Schritt 3

Wir werden folgendes sehen:

 

use-command-SED-on-Linux-4.png

 

Wir müssen das Komma in den zuzuweisenden Bereichen berücksichtigen (2,7). Der Parameter p gibt an, dass es “übereinstimmende Zeilen drucken” bedeutet. Mit diesem Befehl werden alle Zeilen dieses Bereichs gedruckt, und die Option -n (leise) kümmert sich darum Text, der nicht diesem Bereich entspricht, wird nicht angezeigt.

 

Schritt 4

Wir können den Parameter -e (Ausdruck) verwenden, um mehrere Auswahlen zu treffen, zum Beispiel:

 sed -n -e '1,2p' -e '5,6p' EinWie.com.txt 

use-command-SED-on-Linux-5.png

 

Schritt 5

Mit sed ist es möglich, die Startzeile auszuwählen, dann geben wir an, welche in der Datei durchlaufen werden soll und dass die alternativen Zeilen gedruckt werden, zum Beispiel geben wir Folgendes ein:

 sed -n '1 ~ 3p' EinWie.com.txt 

In diesem Fall bezieht sich die erste Zahl auf die Startzeile und die zweite Zahl gibt an, welche Zeilen nach der Startzeile angezeigt werden:

 

use-command-SED-on-Linux-6.png

 

Schritt 6

Eine andere Verwendung von sed ist die Möglichkeit, Zeilen auszuwählen, in denen sich die übereinstimmenden Textmuster befinden. Wenn wir nicht wissen, woher die Zeilennummer stammt, können wir Folgendes ausführen:

 sed -n '/ ^ Run / p' EinWie.com.txt 

use-command-SED-on-Linux-7.png

 

Wir werden die Zeilen sehen, die mit diesem Begriff beginnen.

 

3. So erstellen Sie Ersatz mit SED Linux

 

Schritt 1

Im grundlegenden Teil haben wir gesehen, wie man Text mit sed ersetzt, dort haben wir den Parameter -s (Substitution) verwendet. Dann gibt die erste Zeichenfolge das Suchmuster an und die zweite bezieht sich auf den Text, durch den es ersetzt wird.

 sed -ns / Aufgaben / Aktionen / p 'EinWie.com.txt 

In diesem Beispiel ersetzen wir “Aufgaben” durch “Aktionen”:

 

use-command-SED-on-Linux-8.png

 

Schritt 2

Mit dem Parameter p sed stoppt er automatisch nach dem ersten Match. Um eine globale Suche durchzuführen und die Änderung im Allgemeinen vorzunehmen, müssen wir “g” hinzufügen:

 sed -ns / Aufgaben / Aktionen / gp 'EinWie.com.txt 

Wenn wir möchten, dass die Groß- und Kleinschreibung nicht berücksichtigt wird, fügen wir das “i” hinzu:

 sed -ns / Aufgaben / Aktionen / gpi 'EinWie.com.txt 
Schritt 3

Es ist möglich, Einschränkungen für das Ersetzen nur für bestimmte Abschnitte der Datei festzulegen. Zunächst werden die zu analysierenden Zeilen aufgelistet:

 sed -n '1,3p' EinWie.com.txt 

use-command-SED-on-Linux-9.png

 

Schritt 4

Sehen wir uns Folgendes an: Wir können zwei Leerzeichen finden und durch eines ersetzen:

 sed -n '1.3 s / * / / gp' EinWie.com.txt 

Das Sternchen (*) steht für null oder mehr des zuvor ausgewählten Zeichens.

 

Schritt 5

Mit dem folgenden Befehl können Sie das Suchmuster auf ein einzelnes Leerzeichen reduzieren:

 sed -n '1.3 s / * / / gp' EinWie.com.txt 

Wir sehen den Unterschied in den Ergebnissen:

 

use-command-SED-on-Linux-10.png

 

Im letzteren Fall stimmt das Sternchen mit null oder mehr des vorherigen Zeichens überein. Dadurch sieht jedes Nicht-Leerzeichen durch Anwenden des Befehls wie ein “Null-Leerzeichen” aus.

 

Schritt 6

Um zwei oder mehr Substitutionen gleichzeitig vorzunehmen, führen wir Folgendes aus:

 sed -n -es / ausgeführt / angewendet / gip '-es / Aufgaben / Aktionen / gip' EinWie.com.txt 

use-command-SED-on-Linux-11.png

 

4. SED-Ersatzoptionen unter Linux

Wir können sed auch verwenden, um Dateinamen aus dem System zu extrahieren. In diesem Fall müssen wir berücksichtigen, dass jedes Objekt mit einem Suchmuster (Unterausdrücke) übereinstimmen muss, das nummeriert werden kann (bis zu maximal neun Elemente).

 

Schritt 1

Diese Nummern können dann verwendet werden, um auf bestimmte Unterausdrücke zu verweisen.
Der Unterausdruck muss in Klammern [()] eingeschlossen sein und vor den Klammern muss ein Backslash () stehen, damit sie nicht als normales Zeichen erkannt werden. Beispiel:

 sed 's /  ([^:] * ). * /  1 /' / etc / passwd 

use-command-SED-on-Linux-12.png

 

Die in diesem Befehl verwendeten Variablen sind
  • sed ‘s /: gibt den Befehl sed und den Beginn des Ersetzungsausdrucks an.
  • (: Schließen Sie den Unterausdruck ein, dem ein Backslash vorangestellt ist
  • [^:] *: ist der erste Unterausdruck des Suchbegriffs, der eine Gruppe in Klammern enthält. Das Caret-Zeichen (^) bedeutet “Nein”, wenn es in einer Gruppe verwendet wird, dh einem anderen Zeichen als einem Doppelpunkt
  • ): Die schließende Klammer [)] mit einem Backslash
  • . *: ist der zweite Suchunterausdruck, der “ein beliebiges Zeichen und eine beliebige Anzahl davon” angibt.
  • / 1: ist der Ersetzungsteil des Ausdrucks, der eine Zahl 1 mit einem Backslash () enthält und angibt, dass der Text mit dem ersten Unterausdruck übereinstimmt
  • / ‘: Beende den Befehl sed

 

 

Schritt 2

Mit dem vorherigen Befehl haben wir nach Zeichenfolgen gesucht, die keinen Doppelpunkt enthalten, da jede Zeile der Datei / etc / passwd mit dem Benutzernamen beginnt, der in einem Doppelpunkt endet. Wir können diesen Wert ersetzen, indem wir den Benutzernamen mit dem folgenden Befehl isolieren:

 sed 's /  ([^:] * )  (. * ) /  2 /' / etc / passwd 

use-command-SED-on-Linux-13.png

 

Schritt 3

Wir können nur die Benutzernamen mit dem folgenden Befehl anzeigen:

 sed 's /:.*// "/ etc / passwd 

Eine weitere Option bei sed ist die Verwendung des Parameters c (cut – cut), um Text in einer Datei zu ersetzen. Beispiel:

 sed '/ Linux / c Linux-Betriebssystem' EinWie.com.txt 

use-command-SED-on-Linux-14.png

 

5. Fügen Sie unter Linux Zeilen und Text mit SED ein

 

Schritt 1

Eine weitere Aufgabe bei sed ist das Einfügen neuer Zeilen und Texte in eine Datei. In diesem Fall haben wir die folgenden Daten:

 

use-command-SED-on-Linux-15.png

 

Schritt 2

Wir können eine neue Zeile einfügen, die angibt, unter welcher sie eingefügt wird:

 sed '/ Ub / a -> Eingefügt!' EinWie.com.txt 

use-command-SED-on-Linux-16.png

 

Schritt 3

Es ist auch möglich, den Befehl Einfügen (i) zu verwenden, um eine neue Zeile über der Übereinstimmung einzufügen:

 sed '/ Wi / i -> Eingefügt!' EinWie.com.txt 

use-command-SED-on-Linux-17.png

 

Schritt 4

Wir können das kaufmännische Und-Zeichen (&) verwenden, um einer übereinstimmenden Zeile in der Datei neuen Text hinzuzufügen. Wir führen Folgendes aus:

 sed 's /.*/--> Eingefügt & /' EinWie.com.txt 

use-command-SED-on-Linux-18.png

 

6. So löschen Sie eine Zeile mit SED Linux

In diesem Fall müssen wir den Parameter d (Löschen) verwenden, um beispielsweise die zweite Zeile zu löschen, die wir ausführen:

 sed '2d' EinWie.com.txt 

use-command-SED-on-Linux-19.png

 

Bei Bedarf können wir einen Bereich entfernen:

 sed '1,4d' EinWie.com.txt 

Um Linien außerhalb eines Bereichs zu entfernen, müssen Sie ein Ausrufezeichen (!) Auf folgende Weise verwenden:

 sed '2,4! d' EinWie.com.txt 

7. Speichern von Änderungen mit SED unter Linux

 

Schritt 1

Um die vorgenommenen Änderungen zu übernehmen, können Sie die Option In-place (-i) verwenden, damit sed die Änderungen in die Originaldatei schreibt. Aus Sicherheitsgründen können wir jedoch eine Sicherungserweiterung wie folgt hinzufügen (wir haben die Zeilen gesichert mit dem Wort Wi):

 sed -i'.bak '' /^.*Wi.*$/d 'EinWie.com.txt 

Wir listen den Inhalt auf:

 Katze EinWie.com.txt.bak 

use-command-SED-on-Linux-20.png

 

Schritt 2

Es ist möglich, die Ausgabe mit denselben Ergebnissen in eine neue Datei umzuleiten:

 sed -i'.bak '' /^.*Wi.*$/d 'EinWie.com.txt> EinWie.com1.txt 

use-command-SED-on-Linux-21.png

 

Mit sed können wir unter Linux vollständig mit den Dateien arbeiten, da wir jede ihrer Verwendungsoptionen gesehen haben.