Cómo extraer datos de un archivo XML

Cómo extraer datos de un archivo XML

Estoy intentando mover nuestra configuración PRTG preexistente a una configuración de Nagios. El problema es que actualmente tenemos más de 20.000 monitores, por lo que estoy intentando exportar la información del sensor del archivo .dat a un archivo legible que se pueda mover a otros archivos nagios. El problema es que todavía soy muy nuevo en el mundo de las secuencias de comandos y, aparte de crear una secuencia de comandos que pueda dividir el archivo para que bash no se elimine, todos los intentos han fallado. Intenté utilizar un guión que otra persona había escrito, pero no creo que funcione para lo que necesito.

Necesito extraer la siguiente información. Todo entre host***/host y nombre***/nombre.

Si alguien pudiera al menos indicarme la dirección en la que podría descubrir cómo escribir algo que me permitiera extraer una variedad de texto, eso también funcionaría. :)

Ejemplo:

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

Tenga en cuenta que este archivo de configuración que estoy usando es un archivo .dat que tiene un tamaño de casi un giga.

<?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">

Respuesta1

Utilice un analizador XML comoXMLStarlet:

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

Esto extraería el contenido de cualquiera <host>o <name>nodo en cualquier parte del file.xmldocumento XML.

Es probable que XMLStarlet esté disponible a través de su administrador de paquetes habitual. A veces el ejecutable se llama xmlstarleten lugar de simplemente xml.

información relacionada