Reguläre Ausdrücke verwenden

Bash:
Reguläre Ausdrücke verwenden

Wie geht das:

Grundlegende Musterabgleiche

Um zu finden, ob eine Zeichenkette einem Muster entspricht, können Sie grep verwenden, ein Befehlszeilenprogramm zur Suche in reinen Textdatensätzen nach Zeilen, die mit einem regulären Ausdruck übereinstimmen:

echo "Hallo, Welt!" | grep -o "Welt"
# Ausgabe: Welt

Spezifische Daten extrahieren

Um Teile von Daten zu extrahieren, die Ihren regex-Mustern entsprechen, können Sie -o zusammen mit grep verwenden:

echo "Fehler: Datei nicht gefunden" | grep -oE "[A-Za-z]+:"
# Ausgabe: Fehler:

Verwendung von Regex mit sed

sed (Stream-Editor) ist ein leistungsfähiges Dienstprogramm zur Analyse und Umwandlung von Text. So verwenden Sie sed mit regex, um Text zu ersetzen:

echo "Bash ist großartig" | sed -e 's/großartig/fantastisch/'
# Ausgabe: Bash ist fantastisch

Musterabgleich in bedingten Anweisungen

Bash unterstützt auch direkt regex in bedingten Anweisungen:

[[ "https://beispiel.com" =~ ^https?:// ]] && echo "URL ist gültig" || echo "URL ist ungültig"
# Ausgabe: URL ist gültig

Fortgeschrittene Musterabgleiche und -manipulationen mit awk

awk ist ein weiteres Textverarbeitungswerkzeug, das komplexere Datenextraktionen und -manipulationen unterstützt. Es kann besonders nützlich sein, wenn Sie mit strukturierten Textdaten, wie CSVs, arbeiten:

echo -e "ID,Name,Alter\n1,John,22\n2,Jane,24" | awk -F, '$3 > 22 {print $2 " ist älter als 22."}'
# Ausgabe: Jane ist älter als 22.

Obwohl die in Bash integrierten Regex-Funktionen viele Anwendungsfälle abdecken, könnten Sie für sehr fortgeschrittene Regex-Operationen eine Kombination aus Bash-Skripten mit perl oder python Skripten in Erwägung ziehen, da diese Sprachen leistungsfähige Regex-Bibliotheken bieten (z.B. re in Python). Ein einfaches Beispiel mit Python:

echo "Erfasse das 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# Ausgabe: 123

Das Einbeziehen dieser Programmiersprachen bei Bedarf kann Ihnen helfen, die volle Leistungsfähigkeit von regex in Ihren Bash-Skripten zu nutzen.