/ /シェルによるxml解析-xml、shell、xml-解析

シェルによるxml解析-xml、shell、xml-parsing

example.xmlなどのxmlファイルがあります。

                 <user>
<host>

<jobid>23</jobid>

<instance>1</instance>
</host>
<host>
<jobid>25</jobid>
<instance>3</instance>
</host>
</user>

シェルスクリプトを使用して、jobidの2番目の値である25を解析したい しかし、私は23と25の両方のjobidの値を取得しています 私のシェルスクリプトは、 example.ksh

                 #!/usr/bin/ksh
JobId=$(grep -oPm2 "(?<=<jobid>)[^<]+" < example.xml)
echo $JobId

25である2番目の値を取得するのを手伝ってください。 ありがとう

回答:

回答№1は1

2番目のものだけが必要な場合:

JobId=$( grep -oP "(?<=<jobid>)[^<]+" example.xml | sed -n "2{p;q}" )

回答№2の場合は1

xmlツールを使用してxmlを処理することをお勧めします。

JobId=$(xmlstarlet sel -t -m "//user/host[2]/jobid" -v . example.xml)