/ / xml-Analyse nach Shell - XML, Shell, XML-Analyse

XML-Analyse nach Shell - XML, Shell, XML-Parsing

Ich habe eine XML-Datei, sagen wir example.xml:

                 <user>
<host>

<jobid>23</jobid>

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

Ich möchte den zweiten Wert von jobid, der 25 ist, mithilfe eines Shell-Skripts analysieren Aber ich bekomme sowohl den Wert von jobid als 23 und 25 Mein Shell-Skript ist zum Beispiel example.ksh

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

Bitte helfen Sie mir, den zweiten Wert zu erhalten, der 25 ist. Vielen Dank

Antworten:

1 für die Antwort № 1

Wenn Sie nur den zweiten wollen:

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

1 für die Antwort № 2

Verwenden Sie besser das XML-Tool, um XML zu verarbeiten:

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