GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Reguläre Ausdrücke einführen

Wir haben alle File Globbing mit Wildcard-Zeichen wie * verwendet und ? als Mittel zum Auswählen bestimmter Dateien oder Datenzeilen aus einem Datenstrom. Diese Tools sind leistungsfähig und ich benutze sie viele Male am Tag. Es gibt jedoch Dinge, die mit Platzhaltern nicht möglich sind.

Reguläre Ausdrücke (Regexes oder REs) liefern uns komplexere und flexiblere Muster

passende Fähigkeiten. So wie bestimmte Zeichen beim File Globbing eine besondere Bedeutung bekommen, haben auch REs Sonderzeichen. Es gibt zwei Haupttypen von regulären Ausdrücken (REs), einfache reguläre Ausdrücke (BREs) und erweiterte reguläre Ausdrücke (EREs).

Das erste, was wir brauchen, sind einige Definitionen. Es gibt viele Definitionen für den Begriff reguläre Ausdrücke , aber viele sind trocken und wenig informativ. Hier sind meine.

Reguläre Ausdrücke sind Zeichenfolgen aus Literal- und Metazeichen, die von verschiedenen Linux-Dienstprogrammen als Muster verwendet werden können, um Zeichenfolgen aus reinen ASCII-Textdaten in einem Datenstrom abzugleichen. Wenn eine Übereinstimmung auftritt, kann sie verwendet werden, um eine Datenzeile aus dem Stream zu extrahieren oder zu entfernen oder um die übereinstimmende Zeichenfolge auf irgendeine Weise zu ändern.

Basic Regular Expressions (BREs) und Extended Regular Expressions (EREs) unterscheiden sich hinsichtlich der Funktionalität nicht wesentlich. (Siehe Abschnitt 3.6, „Grundlegende vs. erweiterte reguläre Ausdrücke“ auf der Infoseite von grep.) Der Hauptunterschied besteht in der verwendeten Syntax und der Art und Weise, wie Metazeichen angegeben werden. In einfachen regulären Ausdrücken sind die Metazeichen ? , + , { , | , ( , und ) verlieren ihre besondere Bedeutung. Stattdessen müssen die Backslash-Versionen verwendet werden:\? , \+ , \{ , \| , \( , und \) . Die ERE-Syntax wird von vielen als einfacher zu verwenden angesehen.

Hinweis: Wenn ich von regulären Ausdrücken spreche, meine ich im Allgemeinen normalerweise sowohl grundlegende als auch erweiterte reguläre Ausdrücke. Wenn eine Unterscheidung getroffen werden soll, verwende ich die Akronyme BRE für grundlegende reguläre Ausdrücke oder ERE für erweiterte reguläre Ausdrücke.

Reguläre Ausdrücke (REs) führen das Konzept der Verwendung von Metazeichen zum Abgleichen von Mustern in Datenströmen viel weiter als Datei-Globbing und geben uns noch mehr Kontrolle über die Elemente, die wir aus einem Datenstrom auswählen. REs werden von verschiedenen Tools zum Parsen verwendet ein Datenstrom, um Muster von Zeichen abzugleichen, um eine Transformation der Daten durchzuführen.

Hinweis: Eine allgemeine Bedeutung von parse besteht darin, etwas zu untersuchen, indem man seine Bestandteile untersucht. Für unsere Zwecke analysieren wir einen Datenstrom, um Zeichenfolgen zu lokalisieren, die einem bestimmten Muster entsprechen.

Reguläre Ausdrücke haben den Ruf, obskure und obskure Beschwörungsformeln zu sein, die nur von Personen mit speziellen Assistenten-Sysadmin-Befugnissen verwendet werden. Diese einzelne Codezeile unten (die ich verwendet habe, um eine mir zugesandte Datei in eine verwendbare Form umzuwandeln) scheint dies zu bestätigen:

$ cat Experiment_6-1.txt | grep -v Team | grep -v "^\s*$" | sed -e "s/[Ll]eader//" -e "s/\[//g" -e "s/\]//g" -e "s/)//g" | awk '{print $1" "$2" <"$3">"}' > addresses.txt

Diese Befehlspipeline scheint für jeden ohne Kenntnis von Regex eine widerspenstige Folge von bedeutungslosem Kauderwelsch zu sein. So kam es mir auf jeden Fall vor, als ich zu Beginn meiner Karriere zum ersten Mal auf etwas Ähnliches stieß. Wie Sie sehen werden, sind reguläre Ausdrücke relativ einfach, sobald sie erklärt sind.

Wir können nur ansatzweise alle Möglichkeiten, die uns reguläre Ausdrücke eröffnen, in einem einzigen Artikel (sogar in einer einzigen Serie) anreißen. Es gibt ganze Bücher, die sich ausschließlich mit regulären Ausdrücken befassen, daher werden wir in der kommenden Woche die Grundlagen in einer Reihe von Artikeln hier über Enable Sysadmin untersuchen. Am Ende werden Sie gerade genug wissen, um mit Aufgaben zu beginnen, die für Systemadministratoren üblich sind. Hoffentlich wirst du danach hungrig sein, selbst mehr zu lernen.

Hinweis: Dieser Artikel ist eine leicht modifizierte Version von Kapitel 6 aus Band 2 meines Linux-Buchs „Using and Administering Linux:Zero to SysAdmin“, das Ende 2019 bei Apress erscheinen soll.


Linux
  1. Erste Schritte mit regulären Ausdrücken:Ein Beispiel

  2. Reguläre Ausdrücke einführen

  3. Wie unterscheiden sich reguläre Ausdrücke von Platzhaltern, die zum Filtern von Dateien verwendet werden?

  4. Bash:Reguläre Ausdrücke als Ersatz?

  5. Einführung von Amazon Linux

Erste Schritte mit regulären Ausdrücken

So verwenden Sie Awk und reguläre Ausdrücke zum Filtern von Text oder Zeichenfolgen in Dateien

Reguläre Ausdrücke in Grep (Regex)

Warum funktioniert `\d` nicht in regulären Ausdrücken in sed?

Wie verwenden Sie reguläre Ausdrücke mit dem cp-Befehl in Linux?

Wie kann ich Dateien mit regulären Ausdrücken aus dem TAR-Archiv ausschließen?