如何从 XML 文件中提取数据

如何从 XML 文件中提取数据

我正在尝试将我们现有的 PRTG 设置移动到 Nagios 设置。问题是我们目前有超过 20k 台显示器,因此我尝试将传感器信息从 .dat 文件导出到一个可读文件中,该文件可以移动到许多其他 nagios 文件中。问题是,我对脚本编写还很陌生,除了创建一个可以分割文件的脚本以便 bash 不会自杀之外,所有尝试都失败了。我尝试使用其他人编写的脚本,但我认为它无法满足我的需要。

我需要提取以下信息主机***/主机和名称***/名称之间的所有内容

如果有人至少能指出我可以弄清楚如何编写一些可以让我提取一系列文本的东西的方向,那也是可行的。 :)

例子:

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

请记住,我使用的这个配置文件是一个 .dat 文件,其大小几乎是一个千兆字节。

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

答案1

使用 XML 解析器,例如XML小星

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

这将提取 XML 文档中任意位置的任何<host>或节点的内容。<name>file.xml

XMLStarlet 可能可以通过普通的包管理器获得。有时调用可执行文件xmlstarlet而不仅仅是xml.

相关内容