Regex

Regex (regular expressions) machen furchtbare Kopfschmerzen. Aber da sie so mächtig sind, braucht man sie immer mal wieder. Und hier ist die Kopfschmerztablette:

http://www.regexr.com/ RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr
So sieht die Seite aus

Auf der Seite kann man per Mouse-over seine RegEx ausprobieren und bekommt jeden einzelnen Teil davon erklärt. Ausserdem gibt es ein „Cheatsheet“ mit gängigen Ausdrücken, Beispiele und vieles mehr. Super!

Advertisements
Regex

Spielen mit Variablen

Variablen machen ein Script schon fast zu einem Programm. Daher sollte man sich ein wenig mit den Möglichkeiten auseinandersetzen. Man spart sich dann Aufrufe von Hilfsprogrammen wie awk, sed oder cut.

  1. Default-Wert: Wenn man eine Variable etwa in einer Operation verwendet und die Operation einen Wert erwartet, die Variable aber u.U. leer sein kann, dann muss man einen Default-Wert definieren. Ich mache das üblicherweise so, dass ich die Variable vorher mit dem Default-Wert setze, damit sie in jedem Fall existiert. Aber: Das muss man nicht! Man kann die Variable auch so ausgeben:
    $ echo $N
    
    $ echo ${N-0}
    0
    $ N=1
    $ echo ${N-0}
    1

    Hier wird der Default-Wert ausgegeben, ohne die Variable selbst zu ändern. Will man in dem Fall, dass die Variable ungesetzt ist, sie mit einem Wert setzen, geht das mit :=

    $ echo $N
    
    $ echo ${N:=0}
    0
    $ echo $N
    0
    
  2. Manchmal benötigt man nur einen Teil einer Variable, etwa die ersten drei Zeichen. Man kann dann mit ‚cut‚ arbeiten oder andere komplizierte Lösungen finden, oder man nutzt einfach einen entsprechenden Aufruf der Variable:
    $ N=123456789
    $ echo $N
    123456789
    $ echo ${N:0:3}
    123
    $ echo ${N:2:3}
    345
    $ echo ${N:2:-3}
    3456

    Der erste Fall gibt drei Zeichen der Variable, beginnend mit Position 0 (Anfang) und der zweite Fall beginnend mit Position 2 (drittes Zeichen). Der dritte zeigt alle Variablen ab Stelle 2 und bis zieht die letzten drei ab.

  3. Die Länge einer Variable ist auch oft interessant:
    $ N=123456789
    $ echo ${#N}
    9
    

    Und damit kann man auch den Anfang einer Variable nach Beispiel in 2. beschneiden (auch wenn #N hier sogar zu groß ist, aber es ist niemals zu klein):

    $ N=123456789
    $ echo ${N:2:${#N}}
    3456789
  4. Suchen und Ersetzen/Löschen geht auch:
    $ N=123456789
    $ echo ${N//2/3}
    133456789
    $ echo ${N//2/}
    13456789
    

Falls ich über weitere spannende Variablenspielerreien stolpere, werde ich darüber berichten!

Spielen mit Variablen