In Bash einen String aus HTML/XML-Tags extrahieren
Erstellt: 21.01.2011 15:30
Will man diverse Files auswerten welche man z.B. über "wget" oder anderes aus dem Web besorgt hat, ist es immer mal wieder nötig Werte zu bekommen, welche zwischen zwei HTML- oder XML-Tags liegen. Um diesen Wert zwischen diesen zwei Tags zu extrahieren, leistet "sed" gute Dienste.
Hier die Beispieldatei "xmlfile" aus welchem der Wert "WAHTiNEED" der zwischen den beiden Tags "<key></key>" liegt herausgefiltert werden soll:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<LoginResponse xmlns="urn:internalvim25"><returnval><key>WHATiNEED</key><userName>username</userName><fullName>username</fullName><loginTime>1970-06-25T13:51:06.256885+01:00</loginTime><lastActiveTime>1970-06-25T13:51:06.256885+01:00</lastActiveTime><locale>en</locale><messageLocale>en</messageLocale></returnval></LoginResponse>
</soapenv:Body>
</soapenv:Envelope>
...und hier der sed-String:
sed -n -e 's/.*<key>\(.*\)<\/key>.*/\1/p' Filename
...welcher "WHATiNEED" erfolgreich filtert:
$ sed -n -e 's/.*<key>\(.*\)<\/key>.*/\1/p' xmlfile
WHATiNEED
Kommentare
Verfasse den ersten Kommentar!