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は12番目のものだけが必要な場合:
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)