So verwenden Sie awk und reguläre Ausdrücke, um Text oder Zeichenfolge in Dateien zu filtern
- 3818
- 485
- Levke Harnapp
Wenn wir bestimmte Befehle in UNIX/Linux ausführen, um Text aus einer Zeichenfolge oder Datei zu lesen oder zu bearbeiten, versuchen wir meistens, die Ausgabe in einen bestimmten Abschnitt von Interesse zu filtern. Hier ist die Verwendung regulärer Ausdrücke nützlich.
Lesen Sie auch: 10 Nützliche Linux -Kettenbetreiber mit praktischen Beispielen
Was sind reguläre Ausdrücke?
Ein regulärer Ausdruck kann als Zeichenfolgen definiert werden, die mehrere Zeichenfolge darstellen. Eines der wichtigsten Dinge bei regulären Ausdrücken ist, dass Sie die Ausgabe eines Befehls oder einer Datei filtern, einen Abschnitt einer Text- oder Konfigurationsdatei usw. bearbeiten usw.
Merkmale des regulären Ausdrucks
Regelmäßige Ausdrücke werden aus:
- Gewöhnliche Zeichen wie Raum, Unterstrich (_), a-z, a-z, 0-9.
- Meta -Charaktere die auf gewöhnliche Charaktere erweitert werden, beinhalten sie:
(.)
Es entspricht jedem einzelnen Charakter außer einer neuen Linie.(*)
Es entspricht Null oder mehr Existenz.[ Figuren) ]
Es entspricht einem der in den Zeichen angegebenen Zeichen, man kann auch einen Bindestrich verwenden(-)
eine Reihe von Charakteren wie zu bedeuten, z[A-F]
,[1-5]
, usw.^
Es entspricht dem Beginn einer Zeile in einer Datei.$
entspricht dem Ende der Zeile in einer Datei.\
Es ist ein Fluchtcharakter.
Um Text zu filtern, muss man ein Textfilterwerkzeug wie z. B. verwenden awk. Sie können sich vorstellen awk als Programmiersprache seine eigene. Aber für den Umfang dieses Leitfadens zur Verwendung awk, Wir werden es als einfaches Befehlszeilenfilterwerkzeug abdecken.
Die allgemeine Syntax von awk ist:
# awk 'Skript' Dateiname
Wo 'Skript'
ist eine Reihe von Befehlen, die von verstanden werden awk und werden in der Datei ausgeführt, Dateiname.
Es funktioniert, indem es eine bestimmte Zeile in der Datei liest, eine Kopie der Zeile erstellt und dann das Skript in der Zeile ausführt. Dies wird in allen Zeilen in der Datei wiederholt.
Der 'Skript'
ist in der Form '/ Muster/ Aktion'
Wo Muster ist ein regelmäßiger Ausdruck und der Aktion ist das, was awk tun wird, wenn es das angegebene Muster in einer Zeile findet.
So verwenden Sie awk Filtering -Tool unter Linux
In den folgenden Beispielen konzentrieren wir uns auf die oben diskutierten Meta -Charaktere unter den Merkmalen von awk.
Ein einfaches Beispiel für die Verwendung von awk:
Das folgende Beispiel wird alle Zeilen in der Datei ausdrucken /etc/hosts Da wird kein Muster gegeben.
# awk '//print '/etc/hostsAwk druckt alle Zeilen in einer Datei aus
Verwenden Sie awk mit Muster:
I Das Beispiel unten, ein Muster Lokalhost
wurde gegeben, so dass awk die Linie mit dem mit Lokalhost im /etc/hosts
Datei.
# awk '/localhost/print ' /etc /hostsAwk -Druck angegebener Matching -Zeile in einer Datei
Verwenden Sie awk mit ((.) Wildkarte in einem Muster
Der (.)
wird mit Stringen übereinstimmen, die enthalten loc, Lokalhost, Lokalnet Im folgenden Beispiel.
Das heißt * l songysingle_character c *.
# awk '/l.C/print ' /etc /hostsVerwenden Sie awk, um passende Zeichenfolgen in einer Datei zu drucken
Verwenden Sie awk mit (*) Zeichen in einem Muster
Es enthält Strings, die enthalten sind Lokalhost, Lokalnet, Linien, fähig, Wie im folgenden Beispiel:
# awk '/l*c/print ' /etc /localhostVerwenden Sie awk, um Zeichenfolgen in der Datei zu entsprechen
Sie werden das auch erkennen (*)
Versucht, Ihnen das längste Spiel zu erreichen, das es erkennen kann.
Schauen Sie sich einen Fall an, der dies demonstriert, den regulären Ausdruck nehmen t*t
Was bedeutet, dass Match -Saiten mit Brief beginnen T
und enden mit T
In der folgenden Zeile:
Dies ist Tecmint, in dem Sie die besten guten Tutorials, wie zu Führern, Tecmint erhalten.
Sie erhalten die folgenden Möglichkeiten, wenn Sie das Muster verwenden /t*t/
:
Dies ist t Dies ist Tecmint Dies ist Tecmint, wo Sie t Dies ist Tecmint, in dem Sie das Beste Gutes erhalten. Dies ist Tecmint, wo Sie die besten guten Tutorials erhalten, wie dies tcmint ist, wo Sie die besten guten Tutorials bekommen , wie TOS, Guides, t Dies ist Tecmint, wo Sie die besten guten Tutorials erhalten, wie TOS, Führer, Tecmint
Und (*)
In /t*t/
Durch Wild Card -Charakter kann awk die letzte Option auswählen:
Dies ist Tecmint, in dem Sie die besten guten Tutorials, wie zu Führern, Tecmint erhalten
Verwenden Sie awk mit Set [Zeichen)]
Nehmen Sie zum Beispiel den Satz [Al1]
, Hier passt awk alle Zeichenfolgen mit Charakter überein A
oder l
oder 1
in einer Zeile in der Datei /etc/hosts.
# awk '/[al1]//print ' /etc /hostsVerwenden Sie AWK, um das Matching-Zeichen in der Datei zu drucken
Das nächste Beispiel entspricht Strings, beginnend mit beiden K
oder k
gefolgt von T
:
# awk '/[Kk] t/print ' /etc /hostsVerwenden Sie awk, um die übereinstimmende Zeichenfolge in der Datei zu drucken
Zeichen in einem Bereich angeben
Verstehen Sie Charaktere mit awk:
[0-9]
bedeutet eine einzige Zahl[A-Z]
bedeutet, einen einzelnen unteren Fallbrief anzupassen[A-Z]
bedeutet, einen einzelnen oberen Fallbrief anzupassen[A-Za-Z]
bedeutet, einen einzelnen Buchstaben anzupassen[A-Za-Z 0-9]
bedeutet, einen einzelnen Buchstaben oder eine einzelne Nummer zu erreichen
Schauen wir uns ein Beispiel unten an:
# awk '/[0-9]//print ' /etc /hostsVerwenden Sie awk, um übereinstimmende Nummern in der Datei zu drucken
Die gesamte Zeile aus der Datei /etc/hosts enthalten mindestens eine einzige Zahl [0-9]
Im obigen Beispiel.
Verwenden Sie awk mit (^) Meta -Zeichen
Es entspricht allen Zeilen, die mit dem Muster wie im folgenden Beispiel angegeben sind:
# awk '/^fe/print ' /etc /hosts # awk'/^ff/print ' /etc /hostsVerwenden Sie awk, um alle übereinstimmenden Linien mit Muster zu drucken
Verwenden Sie awk mit ($) Meta -Charakter
Es entspricht allen Zeilen, die mit dem angegebenen Muster enden:
# awk '/ab $/print ' /etc /hosts # awk'/ost $/print ' /etc /hosts # awk'/rs $/print ' /etc /hostsVerwenden Sie awk, um die angegebene Musterzeichenfolge zu drucken
Verwenden Sie awk mit (\) Escape -Zeichen
Es ermöglicht Ihnen, den Charakter als wörtliches zu befolgen, das heißt, ihn genauso wie er ist.
Im folgenden Beispiel wird der erste Befehl alle Zeilen in der Datei ausgedehnt, der zweite Befehl druckt nichts aus $ 25.00, aber es wird kein Fluchtcharakter verwendet.
Der dritte Befehl ist korrekt, da ein Fluchtcharakter zum Lesen verwendet wurde $ wie es ist.
# awk '//print 'Angebote.txt # awk '/25 $.00/print 'Angebote.txt # awk '/\ $ 25.00/print 'Angebote.txtVerwenden Sie awk mit Fluchtcharakter
Zusammenfassung
Das ist nicht alles mit dem awk Befehlszeilungsfiltertool, die Beispiele über A die grundlegenden Operationen von awk. In den nächsten Teilen werden wir uns weiterentwickeln, wie komplexe Merkmale von awk verwendet werden können. Vielen Dank für das Lesen und für Ergänzungen oder Klarstellungen, geben Sie einen Kommentar im Kommentarabschnitt an.
- « SMEM-meldet den Speicherverbrauch pro Prozess und die Basis pro Benutzer unter Linux
- So verwenden Sie awk, um Felder und Spalten in der Datei zu drucken »