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.]