Was ich so treibe...

Uli's IT-Blog - Konzeption, Entwicklung, Betrieb

GREP - Zeilen aus Umgebungsvariable ignorieren

Ich habe ein Projekt “geerbt”, das zu einem großen Teil aus Shell-Skripts besteht. In einem dieser Skripte wird die Ausgabe eines Kommandos in einer Umgebungsvariablen “gesammelt” und ein Fehler ausgegeben, wenn die Umgebungsvariable ein Wort enthält.

Leider generiert besagtes Kommando seit neuestem zusätzliche Ausgaben auch wenn alles OK ist, das Skript läuft dann auf einen Fehler.

Nun brauche ich eine Möglichkeit zum intelligenten Filtern des Inhaltes der Variablen!

Entfernen eines Musters

Mit GREP schaffe ich’s recht einfach, alle Ausgaben, die mit “Starten” beginnen, zu entfernen:

# Funktion zum Ausfiltern aller Zeilen, die einem Muster entsprechen
filterOut () {
  grep -v "^Starten "
}

# Testdaten
AA="$(cat <<EOF
Starten von Replicate.sql
Replicate.sql running
Replicate.sql finished
EOF
)"

# Filterung durchführen
echo "${AA}"|filterOut
# Ausgaben:
#   Replicate.sql running
#   Replicate.sql finished

Entfernen mehrerer Muster

Leider gibt es kein einfaches Muster, um alle ungewünschten Ausgaben rauszuwerfen. Wir brauchen mehrere Muster!

# Funktion zum Ausfiltern aller Zeilen, die einem von mehreren Mustern entsprechen
filterOut () {
  grep -v              \
    -e "^Starten "     \
    -e "sql finished$"
}

# Testdaten
AA="$(cat <<EOF
Starten von Replicate.sql
Replicate.sql running
Replicate.sql finished
EOF
)"

# Filterung durchführen
echo "${AA}"|filterOut
# Ausgaben:
#   Replicate.sql running

AIX

Das “geerbte” Projekt läuft unter AIX 6.1. Schön wär’s, wenn obiges Konstrukt auch dort funktioniert. Ein kurzer Quercheck zeigt: Ja, GREP verhält sich unter AIX genauso.

Comments