Seite 1 von 1

Linux - script, grep, regular expression sowie XML

BeitragVerfasst: Di 4. Mai 2010, 13:16
von Timmii
Alle die grep nutzen wissen wie leicht man etwas damit finden kann,
doch das ganze in einem Script zu nutzen und Elemente aus einer XML Datei auslesen ist meist nicht so einfach überall beschrieben.

Ich stelle das ganze mal am auslesen eines Ports und einer ID aus XML Dateien dar.
Die Ergebnisse sollen dabei in eine Variable im Script gespeichert werden um sie dann weiter nutzen zu können.

Erstmal zum grep Befehl:

grep -o "<xml_tag>[0-9].*</xml_tag>" DATEI | grep -o "[0-9]\{1,\}"
mit dem ersten grep hole ich mir den gewollten Tag,
-o liefert dabei nur das Pattern entsprechende Ergebnis und nicht die ganze Zeile.

grep 2 liefert mir den Wert des Tags, mindestens 1 bis beliebig viele Zahlen.
[a-zA-Z0-9]{1,}(?=<\/) würde beliebigen Inhalt ohne Sonderzeichen suchen, leider scheint das nur in Regular Expression Editoren zu klappen.

Speichern des Ergebnisses in einer Variable.
variableport=`grep -o "<port>[0-9].*</port>" DATEI | grep -o "[0-9]\{1,\}"`
variableid=`grep -o "<port>[0-9].*</port>" DATEI | grep -o "[0-9]\{1,\}"`

Sieht eigentlich ganz einfach aus, das Einschließen des Befehls in die `` Zeichen veranlassen den Interpreter den Inhalt als Befehl und nicht als String zu behandeln.


Das ganze kann so nur bei einem eindeutigen Tag in der Datei genutzt werden. Evtl. kann ich das hier später erweitern.

RegularExpression Editoren:
http://myregexp.com/
http://rubular.com/