====== Regulaere Ausdruecke in der Shell ... ====== * Urspruenglicher Autor: Dirk Deimeke * Urspruengliches Datum: 15.04.2011 Vielen Befuerwortern der [[https://secure.wikimedia.org/wikipedia/de/wiki/Zsh|Z-Shell]] (geniale Shell!) ist nicht bewusst, dass auch die [[https://secure.wikimedia.org/wikipedia/de/wiki/Bourne-again_shell|BaSH]] sich weiterentwickelt. So ist es schon seit einiger Zeit moeglich, [[http://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#Conditional-Constructs|regulaere Ausdruecke in Vergleichen]] zu verwenden. Das folgende kleine Skript zeigt ein Beispiel. #!/bin/bash FILENAME=datei2008-09-19 REGEX='^.*([0-9]{4})-([0-9]{2})-([0-9]{2})' if [[ $FILENAME =~ $REGEX ]] then jahr=${BASH_REMATCH[1]} monat=${BASH_REMATCH[2]} tag=${BASH_REMATCH[3]} fi echo "Jahr: $jahr, Monat: $monat, Tag: $tag" Mit Klammern koennen Ausdruecke gruppiert und aus dem Feld (Array) ''BASH_REMATCH'' ausgelesen werden. Dabei enthaelt das Element ''0'' den String, auf den der komplette Ausdruck passt und die folgenden Elemente die gruppierten Ergebnisse. Damit lassen sich auch Suchen komplett in der Shell abwickeln, ohne dass man auf externe Tools angewiesen ist: [[ $variable =~ 'such' ]] && echo ${BASH_REMATCH[0]} [[adminstoriesartikel|Zurück zur Uebersicht]]