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.