Como extrair dados do arquivo XML

Como extrair dados do arquivo XML

Estou tentando mover nossa configuração pré-existente do PRTG para uma configuração do Nagios. O problema é que atualmente temos mais de 20 mil monitores e, portanto, estou tentando exportar as informações do sensor do arquivo .dat para um arquivo legível que pode ser movido para vários outros arquivos nagios. O problema é que ainda sou muito novo em scripts e, além de criar um script que pode dividir o arquivo para que o bash não se mate, todas as tentativas falharam. Tentei usar um script que outra pessoa escreveu, mas não acho que funcionará para o que preciso.

Estou precisando extrair as seguintes informações Tudo entre host***/host e nome***/nome

Se alguém pudesse pelo menos me indicar a direção onde eu poderia descobrir como escrever algo que me permitisse extrair uma série de textos, isso também funcionaria. :)

Exemplo:

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

Tenha em mente que este arquivo de configuração que estou usando é um arquivo .dat com tamanho quase gigantesco.

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

Responder1

Use um analisador XML comoXMLStarlet:

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

Isso extrairia o conteúdo de qualquer nó <host>ou <name>em qualquer lugar do file.xmldocumento XML.

XMLStarlet provavelmente está disponível através de seu gerenciador de pacotes comum. O executável às vezes é chamado xmlstarletem vez de apenas xml.

informação relacionada