So verwenden Sie Regex mit dem Befehl awk

So verwenden Sie Regex mit dem Befehl awk

Ein regulärer Ausdruck (Regex) wird verwendet, um eine bestimmte Abfolge von Zeichen in einer Datei zu finden. Symbole wie Buchstaben, Ziffern und Sonderzeichen können verwendet werden, um das Muster zu definieren. Verschiedene Aufgaben können leicht durch die Verwendung von Regex -Mustern erledigt werden. In diesem Tutorial zeigen wir Ihnen, wie Sie Regex -Muster mit dem Befehl "awk" verwenden können.

Die in Mustern verwendeten grundlegenden Zeichen

Viele Zeichen können verwendet werden, um ein Regex -Muster zu definieren. Die am häufigsten zur Definition von Regex -Mustern verwendeten Zeichen sind unten definiert.

Charakter Beschreibung
. Passen Sie einen Zeichen ohne neue Linie an (\ n)
\ Zitieren Sie einen neuen Metabarakter
^ Übereinstimmen den Beginn einer Linie
$ Übereinstimmen das Ende einer Linie
| Definieren Sie eine Alternative
() Definieren Sie eine Gruppe
[] Definieren Sie eine Charakterklasse
\ w Passen Sie ein beliebiges Wort an
\S Passen Sie einen beliebigen weißen Weltraumcharakter an
\D Passen Sie eine Ziffer überein
\B Übereinstimmen jede Wortgrenze

Eine Datei erstellen

Um diesem Tutorial zu folgen, erstellen Sie eine Textdatei mit dem Namen Produkte.txt. Die Datei sollte vier Felder enthalten: ID, Name, Typ und Preis.

ID -Name Typpreis

P1001 15 "Monitor Monitor $ 100

P1002 A4tech Maus Maus $ 10

P1003 Samsung Druckerdrucker $ 50

P1004 HP Scanner Scanner $ 60

P1005 Logitech Maus Maus $ 15

Beispiel 1: Definieren Sie ein Regex -Muster mit der Zeichenklasse

Der folgende Befehl 'awk' sucht und druckt Zeilen, die das Zeichen 'n' enthalten, gefolgt von den Zeichen 'er'.

$ CAT -Produkte.txt
$ awk '/ [n] [er]/ drucken $ 0' Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. Die Ausgabe zeigt die Linie, die dem Muster entspricht. Hier entspricht nur eine Zeile dem Muster.

Beispiel 2: Definieren Sie ein Regex -Muster mit dem Symbol '^'

Der folgende Befehl 'awk' sucht nach und druckt Zeilen, die mit dem Zeichen 'P' beginnen und die Nummer 3 enthalten.

$ CAT -Produkte.txt
$ awk '/^p.*3/ Druck $ 0 'Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. Hier gibt es eine Zeile, die dem Muster entspricht.

Beispiel 3: Definieren Sie ein Regex -Muster mit der GSUB -Funktion

Der gsub () Die Funktion wird verwendet, um den Text global zu suchen und zu ersetzen. Der folgende Befehl 'awk' sucht nach dem Wort "Scanner" und ersetzt es durch das Wort "Router", bevor Sie das Ergebnis drucken.

$ CAT -Produkte.txt
$ awk 'GSUB (/Scanner/, "Router")' Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. Es gibt eine Zeile, die das Wort enthält 'Scanner', Und 'Scanner"wird durch das Wort ersetzt"Router'Bevor die Linie gedruckt wird.

Beispiel 4: Definieren Sie ein Regex -Muster mit '*'

Der folgende Befehl 'awk' sucht und druckt eine Zeichenfolge, die mit 'MO' beginnt und ein nachfolgendes Zeichen enthält.

$ CAT -Produkte.txt
$ awk '/ mo*/ drucken $ 0' Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. Drei Zeilen stimmen mit dem Muster überein: Zwei Zeilen enthalten das Wort 'Maus"Und eine Zeile enthält das Wort"Monitor''.

Beispiel 5: Definieren Sie ein Regex -Muster mit dem Symbol "$"

Der folgende Befehl 'awk' sucht in der Datei, die mit der Nummer 5 enden.

$ CAT -Produkte.txt
$ awk '/ 5 $/ drucken $ 0' Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. In der Datei gibt es nur eine Zeile, die mit der Nummer 5 endet.

Beispiel 6: Definieren Sie ein Regex -Muster mit dem '^' und '|' Symbole

Der '^"Symbol zeigt den Beginn einer Linie und die 'an|'Symbol zeigt eine logische oder Anweisung an. Der folgende Befehl 'awk' sucht und druckt nach Zeilen, die mit dem Zeichen beginnen. 'P"und enthalten beide"Scanner' oder 'Maus''.

$ CAT -Produkte.txt
$ awk '/^p.* (Scanner | Maus)/'Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. Die Ausgabe zeigt, dass zwei Zeilen das Wort enthalten 'Maus"Und eine Zeile enthält das Wort"Scanner''. Die drei Zeilen beginnen mit dem Charakter 'P''.

Beispiel 7: Definieren Sie ein Regex -Muster mit dem Symbol "+"

Der '+Der Bediener wird verwendet, um mindestens eine Übereinstimmung zu finden. Der folgende Befehl 'awk' sucht nach und drucken Zeilen, die das Zeichen enthalten. 'N' mindestens einmal.

$ CAT -Produkte.txt
$ awk '/n+/print' Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. Hier der Charakter 'N'enthält mindestens einmal in den Zeilen, die die Wörter enthalten Überwachen, Drucker und Scanner.

Beispiel 8: Definieren Sie ein Regex -Muster mit der Funktion gsub ()

Der folgende Befehl 'awk' sucht global nach dem Wort 'Drucker"Und ersetzen Sie es durch das Wort"Monitor' Verwendung der GSUB () -Funktion.

$ CAT -Produkte.txt
$ awk 'GSUB (/Drucker/, "Monitor") Druck $ 0' Produkte.txt

Die folgende Ausgabe wird erstellt, nachdem die obigen Befehle ausgeführt wurden. Die vierte Zeile der Datei enthält das Wort 'Drucker"zweimal und in der Ausgabe"Drucker"wurde durch das Wort ersetzt"Monitor''.

Abschluss

Viele Symbole und Funktionen können verwendet werden, um Regex -Muster für verschiedene Suche zu definieren und Aufgaben zu ersetzen. Einige Symbole, die häufig in Regex -Mustern verwendet werden, werden in diesem Tutorial mit dem Befehl "awk" angewendet.