如何從 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.

相關內容