Hier ist ein voll funktionsfähiges Beispiel.
Wenn es nur E-Mail-Adressen extrahiert, könnten Sie einfach so etwas tun:
1) Angenommen, die XML-Datei spam.xml ist wie
<spam>
<victims>
<victim>
<name>The Pope</name>
<email>[email protected]</email>
<is_satan>0</is_satan>
</victim>
<victim>
<name>George Bush</name>
<email>[email protected]</email>
<is_satan>1</is_satan>
</victim>
<victim>
<name>George Bush Jr</name>
<email>[email protected]</email>
<is_satan>0</is_satan>
</victim>
</victims>
</spam>
2) Mit diesem kurzen Bash-Code können Sie die E-Mails abrufen und verarbeiten:
#!/bin/bash
emails=($(grep -oP '(?<=email>)[^<]+' "/my_path/spam.xml"))
for i in ${!emails[*]}
do
echo "$i" "${emails[$i]}"
# instead of echo use the values to send emails, etc
done
Ergebnis dieses Beispiels ist:
0 [email protected]
1 [email protected]
2 [email protected]
Wichtiger Hinweis:
Verwenden Sie dies nicht für ernste Angelegenheiten. Dies ist in Ordnung, um herumzuspielen, schnelle Ergebnisse zu erzielen, grep zu lernen usw., aber Sie sollten auf jeden Fall suche, lerne und verwende einen XML-Parser für die Produktion (siehe Michas Kommentar unten).
Sie könnten es mit xmllint
versuchenDas Programm xmllint analysiert eine oder mehrere XML-Dateien, die in der Befehlszeile als xmlfile angegeben werden. Abhängig von den ausgewählten Optionen werden verschiedene Ausgabetypen gedruckt. Es ist nützlich, um Fehler sowohl im XML-Code als auch im XML-Parser selbst zu erkennen
Es erlaubt Ihnen, Elemente im XML-Dokument per xpath auszuwählen, indem Sie die Option --pattern verwenden.
Unter Mac OS X (Yosemite) wird es standardmäßig installiert.
Wenn Ubuntu noch nicht installiert ist, können Sie apt-get install libxml2-utils
ausführen
Ich bin überrascht, dass niemand xmlsh erwähnt hat. Das Leitbild :
Eine Befehlszeilen-Shell für XML Basierend auf der Philosophie und dem Design der Unix-Shells
xmlsh bietet eine vertraute Scripting-Umgebung, die jedoch speziell auf das Scripting von XML-Prozessen zugeschnitten ist.
Eine Liste von Shell-ähnlichen Befehlen finden Sie hier.
Ich verwende den xed
viel befehlen, was sed
entspricht für XML und erlaubt XPath
basierende Suche und ersetzt.
Es gibt auch xmlstarlet (das auch für Windows verfügbar ist).
http://xmlstar.sourceforge.net/doc/xmlstarlet.txt