XML 파일에서 데이터를 추출하는 방법

XML 파일에서 데이터를 추출하는 방법

기존 PRTG 설정을 Nagios 설정으로 이동하려고 합니다. 문제는 현재 20,000개가 넘는 모니터를 보유하고 있기 때문에 센서 정보를 .dat 파일에서 다른 여러 nagios 파일로 이동할 수 있는 읽기 가능한 파일로 내보내려고 한다는 것입니다. 문제는 제가 아직 스크립팅을 처음 접했고 bash가 스스로 종료되지 않도록 파일을 분할할 수 있는 스크립트를 만드는 것 외에는 모든 시도가 실패했다는 것입니다. 다른 사람이 작성한 스크립트를 사용하려고 했지만, 내가 원하는 대로 작동하지 않을 것 같습니다.

호스트***/호스트와 이름***/이름 사이의 모든 정보를 추출해야 합니다.

누군가가 적어도 내가 다양한 텍스트를 추출할 수 있도록 뭔가를 작성하는 방법을 알아낼 수 있는 방향을 알려준다면 그것도 효과가 있을 것입니다. :)

예:

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

제가 사용하고 있는 이 구성 파일은 크기가 거의 1GB에 달하는 .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은 일반 패키지 관리자를 통해 사용할 수 있습니다. 실행 파일은 xmlstarlet때때로 xml.

관련 정보