XML Datei mit bash auslesen und einzelne Werte zuordnen

  • Hallo zusammen,


    während meiner PowerShell Zeit habe ich sehr oft und sehr gerne mit XML Dateien gearbeitet. Daten auslesen und in einer XML Datei speichern war alles kein Problem und auch relativ einfach. Da ich jetzt aber auf bash umsteigen möchte und somit auch meine alten PowerShell Scripte mitnehmen will, brauche ich auch hier XML Dateien.


    Bei meiner Recherche bin ich über xml_grep sowie xpath gestolpert beides macht soweit eigentlich seinen Job. xpath finde ich jedoch einfach. Jetzt aber zu meinem Problem:


    Ich habe eine XML Datei mit recht einfachem Inhalt:

    XML: data.xml
    <index>	<settings>		<ftp username="ftp-user" password="ftp-password" directory="ftp-directory" />		<local directory="/path/to/directory" />	</settings></index>

    Aus dieser Datei möchte ich ich jetzt index>settings>ftp>username auslesen. Mit xpath mache ich das derzeit so:

    Bash: script.sh
    xpath -q -e /index/settings/ftp/@username /home/ckragt/test/data.xml

    An sich gar kein Problem, nur die Ausgabe sieht so aus:

    Bash: ausgabe
    username="ftp-user"

    Ich möchte allerdings als Ausgabe nur ftp-user erhalten und in eine Variable schreiben ohne das ich da vorher noch mit RegEx o.Ä. filtern muss. Jemand eine Idee oder einen Vorschlag? Andere Pakete schaue ich mir natürlich auch gerne an.


    NCHTRAG: Aktuell klappt es damit recht gut:

    Bash: script.sh
    xpath -q -e /index/settings/ftp/@username /home/ckragt/test/data.xml | sed 's/^[^"]*"//' | sed  's/".*//'

    Aber es darf natürlich gerne übersichtlicher sein ;)

    "I tell computers to do things. Sometimes they listen."


    Chris Kragt | CKITservices | Informatikkaufmann

    Web: www.kragt.io | Mail: hi [at] kragt.io

    2 Mal editiert, zuletzt von Tacqila ()