So verwenden Sie awk und reguläre Ausdrücke, um Text oder Zeichenfolge in Dateien zu filtern

So verwenden Sie awk und reguläre Ausdrücke, um Text oder Zeichenfolge in Dateien zu filtern

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:

  1. Gewöhnliche Zeichen wie Raum, Unterstrich (_), a-z, a-z, 0-9.
  2. Meta -Charaktere die auf gewöhnliche Charaktere erweitert werden, beinhalten sie:
    1. (.) Es entspricht jedem einzelnen Charakter außer einer neuen Linie.
    2. (*) Es entspricht Null oder mehr Existenz.
    3. [ 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.
    4. ^ Es entspricht dem Beginn einer Zeile in einer Datei.
    5. $ entspricht dem Ende der Zeile in einer Datei.
    6. \ 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/hosts 
Awk 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 /hosts 
Awk -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 /hosts 
Verwenden 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 /localhost 
Verwenden 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 /hosts 
Verwenden 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 /hosts 
Verwenden Sie awk, um die übereinstimmende Zeichenfolge in der Datei zu drucken

Zeichen in einem Bereich angeben

Verstehen Sie Charaktere mit awk:

  1. [0-9] bedeutet eine einzige Zahl
  2. [A-Z] bedeutet, einen einzelnen unteren Fallbrief anzupassen
  3. [A-Z] bedeutet, einen einzelnen oberen Fallbrief anzupassen
  4. [A-Za-Z] bedeutet, einen einzelnen Buchstaben anzupassen
  5. [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 /hosts 
Verwenden 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 /hosts 
Verwenden 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 /hosts 
Verwenden 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.txt 
Verwenden 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.