XMLファイルからデータを抽出する方法

XMLファイルからデータを抽出する方法

既存のPRTG設定をNagios設定に移動しようとしています。問題は、現在20,000を超えるモニターを持っているため、センサー情報を.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

<host>これにより、XML文書のすべてのノードの内容が抽出されます。<name>file.xml

XMLStarlet は、汎用パッケージマネージャを通じて利用できます。時には実行可能ファイルxmlstarletxml

関連情報