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 № 1Wenn 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)