Awk

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 Zeichenfolge innerhalb einer Datei zu finden. Symbole wie Buchstaben, Ziffern und Sonderzeichen können verwendet werden, um das Muster zu definieren. Verschiedene Aufgaben können einfach mit Regex-Mustern erledigt werden. In diesem Tutorial zeigen wir Ihnen, wie Sie Regex-Muster mit dem Befehl 'awk' verwenden.

Die in Mustern verwendeten Grundzeichen

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

Charakter Beschreibung
. Übereinstimmung mit einem beliebigen Zeichen ohne Zeilenumbruch (\n)
\ Zitiere einen neuen Meta-Charakter
^ Übereinstimmung mit dem Anfang einer Zeile
$ Übereinstimmung mit dem Ende einer Zeile
| Definiere eine Alternative
() Definiere eine Gruppe
[] Definiere eine Charakterklasse
\w Finde jedes Wort
\s Übereinstimmung mit einem beliebigen Leerzeichen
\d Übereinstimmung mit einer beliebigen Ziffer
\b Übereinstimmung mit einer beliebigen Wortgrenze

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 Typ Preis

p1001 15" Monitor Monitor $100

p1002 A4tech Maus Maus $10

p1003 Samsung Drucker Drucker $50

p1004 HP-Scanner-Scanner $60

p1005 Logitech Maus Maus $15

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

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

$ Katzenprodukte.TXT
$ awk '/[n][er]/ print $0' Produkte.TXT

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

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

Der folgende 'awk'-Befehl sucht und druckt Zeilen, die mit dem Zeichen 'p' beginnen und die Zahl 3 enthalten.

$ Katzenprodukte.TXT
$ awk '/^p.*3/ print $0' Produkte.TXT

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

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

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

$ Katzenprodukte.TXT
$ awk 'gsub(/Scanner/, "Router")' Produkte.TXT

Die folgende Ausgabe wird erzeugt, nachdem die obigen Befehle ausgeführt wurden. Es gibt eine Zeile, die das Wort 'Scanner', und 'Scanner' wird ersetzt durch das Wort 'Router' bevor die Zeile gedruckt wird.

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

Der folgende 'awk'-Befehl sucht und gibt jede Zeichenfolge aus, die mit 'Mo' beginnt und alle nachfolgenden Zeichen enthält.

$ Katzenprodukte.TXT
$ awk '/Mo*/ print $0' Produkte.TXT

Die folgende Ausgabe wird erzeugt, nachdem die obigen Befehle ausgeführt wurden. Drei Zeilen entsprechen dem Muster: 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 'awk'-Befehl sucht und druckt Zeilen in der Datei, die mit der Nummer 5 enden.

$ Katzenprodukte.TXT
$ awk '/5$/ print $0' Produkte.TXT

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

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

Das '^'-Symbol zeigt den Anfang einer Zeile an, und das '|' Symbol zeigt eine logische ODER-Anweisung an. Der folgende 'awk'-Befehl sucht und druckt Zeilen, die mit dem Zeichen 'p' und enthalten entweder 'Scanner' oder 'Maus'.

$ Katzenprodukte.TXT
$ awk '/^p.* (Scanner|Maus)/' Produkte.TXT

Die folgende Ausgabe wird erzeugt, nachdem die obigen Befehle ausgeführt wurden. Die Ausgabe zeigt, dass zwei Zeilen das Wort 'Maus' und eine Zeile enthält das Wort 'Scanner'. Die drei Zeilen beginnen mit dem Zeichen 'p'.

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

Das '+'-Operator wird verwendet, um mindestens eine Übereinstimmung zu finden. Der folgende 'awk'-Befehl sucht und gibt Zeilen aus, die das Zeichen 'nein' wenigstens einmal.

$ Katzenprodukte.TXT
$ awk '/n+/print' Produkte.TXT

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

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

Der folgende 'awk'-Befehl sucht global nach dem Wort 'Drucker' und ersetze es durch das Wort 'Monitor' Verwendung der gsub()-Funktion.

$ Katzenprodukte.TXT
$ awk 'gsub(/Printer/, “Monitor”) print$0' Produkte.TXT

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

Fazit

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

Beste Befehlszeilenspiele für Linux
Die Befehlszeile ist nicht nur Ihr größter Verbündeter bei der Verwendung von Linux – sie kann auch eine Quelle der Unterhaltung sein, da Sie damit vi...
Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...
Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...