So extrahieren Sie Daten aus einer XML-Datei

So extrahieren Sie Daten aus einer XML-Datei

Ich versuche, unser vorhandenes PRTG-Setup auf ein Nagios-Setup umzustellen. Das Problem ist, dass wir derzeit über 20.000 Monitore haben, und deshalb versuche ich, die Sensorinformationen aus der .dat-Datei in eine lesbare Datei zu exportieren, die in eine Reihe anderer Nagios-Dateien verschoben werden kann. Das Problem ist, dass ich noch sehr neu im Scripting bin und abgesehen von der Erstellung eines Scripts, das die Datei aufteilen kann, damit Bash sich nicht selbst beendet, sind alle Versuche fehlgeschlagen. Ich habe versucht, ein Script zu verwenden, das jemand anderes geschrieben hat, aber ich glaube nicht, dass es für das, was ich brauche, funktioniert.

Ich muss die folgenden Informationen extrahieren Alles zwischen Host***/Host und Name***/Name

Wenn mir jemand zumindest einen Hinweis geben könnte, wie ich etwas schreiben kann, mit dem ich einen Textbereich extrahieren kann, würde das auch funktionieren. :)

Beispiel:

<host>
10.0.0.0
</host>
<name>
This is a Business
</name>

Bedenken Sie, dass die von mir verwendete Konfigurationsdatei eine DAT-Datei mit einer Größe von fast einem Gigabyte ist.

<?xml version="1.0" encoding="UTF-8"?>
<root version="15" oct="PRTG Network Monitor 17.2.31.1917 x64" 
saved="5/12/2017 4:36:26 PM" max="184692" guid="{3A6843F2-61BB-47EA-8EB2-
B2E62E24EF2F}" treeversion="0" created="2009-10-02-19-22-11" 
<statistics time="12-05-2017 16:09:19">

Antwort1

Verwenden Sie einen XML-Parser wieXMLStarlet:

$ xmlstarlet sel -t -v '//host' -v '//name' file.xml

<host>Dadurch werden die Inhalte aller <name>Knoten an beliebiger Stelle im file.xmlXML-Dokument extrahiert .

XMLStarlet ist wahrscheinlich über Ihren normalen Paketmanager verfügbar. Die ausführbare Datei wird manchmal aufgerufen, xmlstarletanstatt nur xml.

verwandte Informationen