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.

관련 정보