adminstoriesregulaereausdrueckeindershell

no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


adminstoriesregulaereausdrueckeindershell [20120813 13:07] (aktuell) – angelegt Dirk Deimeke
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