Verwendung des Operators =~ in Bash

Der reguläre Ausdruck ist ein sehr nützliches Werkzeug, um beliebige Inhalte abzugleichen oder den Inhalt einer Datei oder in einer Zeichenfolge mithilfe eines Regex-Musters zu suchen und zu ersetzen. Es kann auf unterschiedliche Weise mit dem Bash-Skript verwendet werden. Das Symbol =~ wird in der „if“-Anweisung von Bash verwendet, um eine beliebige Zeichenfolge zu durchsuchen. Zur Definition der passenden Regex-Muster können viele Arten von Ausdrücken verwendet werden. In diesem Tutorial werden einige der häufig verwendeten regulären Ausdrücke und die Verwendung einiger Ausdrücke mit dem Operator =~ erläutert.

Häufig verwendete reguläre Ausdrücke

Ausdruck
Zweck

. Es wird verwendet, um nach Zeichen ohne Zeilenumbruch (\n) zu suchen. ^ Es wird verwendet, um nach Zeichen am Anfang der Zeichenfolge zu suchen. $ Es wird verwendet, um nach Zeichen am Ende der Zeichenfolge zu suchen.

[0-9]
Es wird verwendet, um eine beliebige Zahl im Bereich von 0 bis 9 in der Zeichenfolge zu suchen.

[A-Z]
Es wird verwendet, um nach einem beliebigen Zeichen aus dem Bereich von AZ in der Zeichenfolge zu suchen.

[a-z]
Es wird verwendet, um nach beliebigen Zeichen und Zahlen aus dem Bereich von az in der Zeichenfolge zu suchen.

[^A-Z0-9]
Es wird verwendet, um alle Zeichen außer den Großbuchstaben und Ziffern in der Zeichenfolge zu durchsuchen.

[a-zA-z0-9]
Es wird verwendet, um nach beliebigen Zeichen und Zahlen aus dem Bereich von az, AZ und 0-9 in der Zeichenfolge zu suchen. \n Es wird verwendet, um nach dem Zeilenumbruchzeichen zu suchen. \t Wird zum Suchen nach Tabulatorzeichen verwendet.

Verschiedene Beispiele für =~-Operatoren

In diesem Teil des Tutorials werden die verschiedenen Möglichkeiten zum Durchsuchen einer bestimmten Zeichenfolge innerhalb eines Textes mithilfe des Operators =~ und des regulären Ausdrucksmusters gezeigt.

Beispiel 1: Suchen Sie eine bestimmte Zeichenfolge mithilfe des Symbols „*“.

Erstellen Sie eine Bash-Datei mit dem folgenden Skript, das den Hauptzeichenfolgenwert übernimmt, in dem nach der Zeichenfolge gesucht wird, und den Suchzeichenfolgenwert im Hauptzeichenfolgenwert durchsucht. Als nächstes wird der Operator „=~“ mit der Suchzeichenfolge verwendet, um zu prüfen, ob die Suchzeichenfolge in der Hauptzeichenfolge vorhanden ist oder nicht. Hier wird das Symbol „*“ verwendet, um eine beliebige Anzahl von Zeichen zu kennzeichnen.

#!/bin/bash

#Nimm die Hauptschnur

read -p „Geben Sie den Hauptzeichenfolgenwert ein: “ strValue

#Nehmen Sie die Suchzeichenfolge

read -p „Geben Sie den Suchzeichenfolgenwert ein: “ search

#Überprüfen Sie, ob die Suchzeichenfolge in der Hauptzeichenfolge vorhanden ist oder nicht

Wenn [[ $strValue =~ .*$search.* ]]; Dann

echo „Die Zeichenfolge existiert im Text.“

anders

echo „Die Zeichenfolge existiert nicht im Text.“

fi

Die folgende Ausgabe erscheint nach der Ausführung des Skripts mit dem Hauptzeichenfolgenwert „Regulären Ausdruck lernen“ und dem Suchzeichenfolgenwert „regulär“. Hier existiert der Suchstring im Hauptstring:

Beispiel 2: Überprüfen Sie die Erweiterung der jeweiligen Datei

Erstellen Sie eine Bash-Datei mit dem folgenden Skript, das den Dateinamen aus dem Befehlszeilenargument übernimmt, und prüfen Sie, ob es sich bei der Datei um eine Bash-Datei handelt oder nicht.

#!/bin/bash

#Nehmen Sie den Dateinamen aus dem Argument

Dateiname=$1

#Definieren Sie den Sucherweiterungswert

extension=’bash‘

#Überprüfen Sie, ob die Erweiterung mit der Dateierweiterung übereinstimmt oder nicht

Wenn [[ „$filename“ =~ \.$extension$ ]]; Dann

echo „$filename ist eine Bash-Datei.“

anders

echo „$filename ist keine Bash-Datei.“

fi

Für den Dateinamen „ping1.bash“, bei dem es sich um eine Bash-Datei handelt, erscheint die folgende Ausgabe:

Für den Dateinamen „hello.txt“, bei dem es sich nicht um eine Bash-Datei handelt, erscheint die folgende Ausgabe:

Beispiel 3: Suchen Sie nach bestimmten Zeichen in einer Zeichenfolge

Erstellen Sie eine Bash-Datei mit dem folgenden Skript, das einen Zeichenfolgenwert annimmt und den Zeichenbereich von „a“ bis „e“ in der Zeichenfolge durchsucht.

#!/bin/bash

#Nimm die Hauptschnur

read -p „Geben Sie den Hauptzeichenfolgenwert ein: “ strValue

#Überprüfen Sie, ob die Zeichenfolge Zeichen von a bis e enthält oder nicht

Wenn [[ $strValue =~ [a-e] ]]; Dann

echo „Die Zeichenfolge enthält Zeichen von ‚a‘ bis ‚e‘“

anders

echo „Die Zeichenfolge enthält kein Zeichen von ‚a‘ bis ‚e‘.“

fi

Nach der Ausführung des Skripts mit dem Eingabewert „LinuxHint“ erscheint die folgende Ausgabe:

Nach der Ausführung des Skripts mit dem Eingabewert „Hello World“ erscheint die folgende Ausgabe:

Beispiel 4: Bestätigen Sie die Mobiltelefonnummer

Erstellen Sie eine Bash-Datei mit dem folgenden Skript, das eine Mobiltelefonnummer im jeweiligen Format annimmt und mithilfe des Musters für reguläre Ausdrücke und des Operators =~ prüft, ob die Nummer gültig oder ungültig ist.

#Nehmen Sie eine Mobiltelefonnummer im angegebenen Format

read -p „Geben Sie eine Mobiltelefonnummer ein [880-XXXX-XXXXXX]: “ Handy, Mobiltelefon

#Legen Sie das Muster für den Abgleich fest

regexPattern=’^880-[0-9]{4}-[0-9]{6}‘

#Überprüfen Sie, ob die Mobiltelefonnummer gültig oder ungültig ist

Wenn [[ $mobile =~ $regexPattern.* ]]; Dann

echo „Handynummer ist gültig.“

anders

echo „Handynummer ist ungültig.“

fi

Nach der Ausführung des Skripts mit dem gültigen Eingabewert „880-1922-032970“ erscheint die folgende Ausgabe:

Nach der Ausführung des Skripts mit dem ungültigen Eingabewert „880-15677-67345“ erscheint die folgende Ausgabe:

Abschluss

In diesem Tutorial werden die Methoden zur Verwendung des Operators „=~“ zum Durchsuchen der Zeichenfolgenwerte mit verschiedenen Arten von regulären Ausdrücken gezeigt.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen