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

Bearbeiten von Text mit sed und grep

Tools wie sed (Stream-Editor) und grep (Global Regular Expression Print) sind leistungsstarke Methoden, um Zeit zu sparen und Ihre Arbeit zu beschleunigen. Bevor ich tief in die Anwendungsfälle eintauche, möchte ich kurz reguläre Ausdrücke (regexes) erläutern, die für die spätere Textmanipulation notwendig sind.

Was sind reguläre Ausdrücke? Wenn wir uns mit Protokolldateien, Textdateien oder einem Codestück befassen, werden wir

müssen verstehen, dass all dies aus Zeichen besteht. Wenn die Länge der Datei groß ist, wird es notwendig, bestimmte Muster herauszufiltern, um das Debugging zu vereinfachen. In diesen Anwendungsfällen finden Sie Beispiele für reguläre Ausdrücke.

Gruppe 1:Serverdaten

Angenommen, Sie haben eine Datei, in der eine Zeichenfolge vorkommt:

Wie filtern Sie nun site1 heraus 's Details (die obige Datei ist ein einfaches Beispiel), sodass Sie nur die notwendigen Informationen abrufen und die Einträge manipulieren können?

Wir können deutlich erkennen, dass es in der gesamten Datei ein gemeinsames Muster („Cloud-Bereitstellung“) gibt. Jetzt können wir also Filtertechniken verwenden, um mit grep Informationen aus der Datei abzurufen . Ich erinnere mich an dies als "get regex n print."

Anwendungsfall 1

Wenn ich die Server aus verschiedenen Regionen haben möchte, kann ich grep verwenden wie folgt:

Anwendungsfall 2

Angenommen, Sie möchten die Server anhand der IP-Adresse herausfiltern. Sie können dasselbe tun mit:

Anwendungsfall 3

Sehen Sie sich nun das erste grep an Befehlsbild. Obwohl Sie den Subnetzbereich Ihres Systems kannten, gab der Befehl das Vorkommen von 10.1 in der gesamten Datei aus.

Wie können Sie diese Art von Anwendungsfall lösen? Wir können dieses Problem mit Regex-basierter erweiterter Filterung lösen, wie hier:

Dieses Beispiel ist nur eine mögliche Verwendung von grep . Da es sich um eine relativ kleine Datei handelt, können Sie mit den oben gezeigten Informationen das erhalten, was Sie möchten. Das -v Schalter kehrt die Suchkriterien um, was bedeutet, dass grep sucht die Datei sed-grep.txt und druckt alle Details außer <search-pattern> aus (10.1. in diesem Fall).

Anwendungsfall 4

Angenommen, Sie möchten die IP-Adressen ersetzen und alle Server in diesen Regionen in ein anderes Subnetz verschieben. Sie können sed verwenden für diesen Anwendungsfall.

Von der Manpage sed verwendet das Format:

sed [options] commands [file-to-edit]

Unser Befehl für diesen Anwendungsfall könnte so aussehen:

Dieser Befehl gliedert sich wie folgt:

  • Die s steht für Substitut.
  • Der % ist ein Trennzeichen (wir können hier beliebige Zeichen verwenden).
  • Das <search pattern> erscheint nach dem ersten % .
  • Der <replace pattern> erscheint nach dem zweiten % .
  • Das g steht für global replace (d. h. in der gesamten Datei).

Oder:

s%<search-pattern>%<replace-pattern>%g

Anwendungsfall 5

Sie können sogar die Regionen der Server in der Datei ändern:

Anwendungsfall 6

Dieser Anwendungsfall ist fortgeschrittener. Wir entfernen nur Kommentare (# ) aus einer Datei mit sed :

Dieser Befehl besagt, dass wenn # erscheint als erstes Zeichen einer Zeile, um diese Zeile durch ein Leerzeichen zu ersetzen. Als Ergebnis übernimmt dieser Befehl die Aufgabe, die Kommentare aus der Datei zu entfernen.

Gruppe 2:/etc/passwd

Schauen wir uns einige weitere Anwendungsfälle an, diesmal mit /etc/passwd .

Anwendungsfall 1

Angenommen, Sie möchten die Benutzer aus der Datei /etc/passwd holen Datei. Sie können sed verwenden wie folgt:

Anwendungsfall 2

Was ist, wenn Sie nur die ersten 10 Benutzer aus /etc/passwd abrufen möchten ? Sie können sed verwenden und awk zu diesem Zweck (bitte haben Sie hier Geduld): 

Dieser Befehl lässt sich wie folgt aufschlüsseln:

  • sed -n bedeutet nicht alles drucken.
  • p druckt die Zeilen eins bis 10.
  • awk hier verwendet : als Feldtrenner und druckt die erste Spalte.

Anwendungsfall 3

Löschen Sie einen bestimmten Zeilenbereich in Textdateien mit sed :

SELinux-Anwendungsfall

Hier ist ein Beispiel sed Befehl zum Manipulieren von SELinux:

Schlussfolgerung

Dies ist mein Versuch, Ihnen als Leser nur einen kleinen Einblick in die Möglichkeiten der Verwendung von sed zu geben und grep . Mit diesen Befehlen können Sie viele Textbearbeitungen vornehmen. Weitere Informationen finden Sie in den verschiedenen Optionen auf der Manpage.

[Möchten Sie Red Hat Enterprise Linux ausprobieren? Jetzt kostenlos herunterladen.]


Linux
  1. Wie ersetzt man sed wie Text durch Python?

  2. Entfernt Vorkommen von Zeichenketten in Textdatei

  3. Wie füge ich einen Text am Anfang einer Datei ein?

  4. sed mit wörtlicher Zeichenfolge - keine Eingabedatei

  5. Suchen und ersetzen Sie Text in einer Datei zwischen einem Zeilenbereich mit sed

Bearbeiten Sie Text unter Linux mit KWrite und Kate

Bearbeiten von Text auf der Kommandozeile mit sed

Bearbeiten von Text in der Befehlszeile mit grep

So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk

Beispiele und Verwendung von Grep mit Berücksichtigung der Groß- und Kleinschreibung

grep Paare von Mustern und Datei