Archiv der Kategorie: Shell

Kleiner Helfer: xpath -e

Da ich für einen Altdatenmigration bestimmte Import-Dateien erzeugen muss und es eigentlich nicht kompliziert ist, entschied ich mich, mal wieder mit dem Gespann grep-sed-cut auf der Bash ein paar Scripte zu schreiben.

Da es sich aber als doch etwas zu sperrig herausstellte, mit reinem Regex in XML-Dateien herumzuparsen und leider in verschiedenen Schlüssel-Literalen Leerzeichen zu finden waren, habe ich xpath auf der Kommandozeile für mich entdeckt.

Diese kleine Perl-Programm macht genau das, was der Name vermuten lässt. Man gibt ihm einen oder auch verschachtelt mehrere XPath-Ausdrücke. Über diese Ausdrücke sucht dann xpath die entsprechenden Werte und gibt sie auf Stdout als Literale aus. Eigentlich ganz einfach und das Script ist fertig.

xpath -q -e //mainLocation/key $xmlfile | grep key | sed 's@<key>@@g'| sed 's@</key>@@g' >> locationInXML.list

Fertig, wenn man nicht, wie üblich, diverseste Fehlerfälle der Altdaten abfangen müsste.

grep -nv "^[[:alnum:]]" locationInXML.list oder
for file in `grep "<key></key>" *.xml | sort | uniq | cut -f1 -d:`; do mv $file errorKeys/; done

Geht bestimmt eleganter, aber letztlich: Es funktioniert.