adminstoriesregulaereausdrueckeindershell

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

adminstoriesregulaereausdrueckeindershell [20120813 13:07] (aktuell)
Dirk Deimeke angelegt
Zeile 1: Zeile 1:
 +====== 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.
 +
 +<code bash>#​!/​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"</​code>​
 +
 +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:
 +
 +<code bash>[[ $variable =~ '​such'​ ]] && echo ${BASH_REMATCH[0]}</​code>​
 +
 +[[adminstoriesartikel|Zurück zur Uebersicht]]
  • adminstoriesregulaereausdrueckeindershell.txt
  • Zuletzt geändert: 20120813 13:07
  • von Dirk Deimeke