0

次のxmlを追加し続けるファイルがあります。変数から取得したいのは、jobStatus の percentComplete です。どうすればそれを手に入れることができますか?xml を解析する方法がわかりません。XMLStarlet を使用しようとしましたが、失敗しました。シェルで使用できる変数で percentComplete を取得したいと考えています。

<batchStatus name="" submissionTime="1/23/12 10:00:26 AM" sentBy="mike" 
timeElapsed="43 second(s)" timeRemaining="4 minute(s)" timeElapsedSeconds="43"
timeRemainingSeconds="294" percentComplete="12" resumePercentComplete="0" 
status="Processing" batchid="FD66DC21-6AA4-47FB-A3F0-7300C7BDAB8A" /batchStatus>
<jobStatus name="file.mov" submissionTime="1/23/12 10:00:26 AM" sentBy="mike"
 jobType="Compressor" priority="HighPriority" timeElapsed="43 second(s)" 
timeRemaining="4 minute(s)" timeElapsedSeconds="43" timeRemainingSeconds="294"
 percentComplete="12" resumePercentComplete="0" status="Processing: Transcoding" 
jobid="FDF1A488-51B9-4B9A-908B-FD5D95CE7E92" 
batchid="FD66DC21-6AA4-47FB-A3F0-7300C7BDAB8A" /jobStatus>
4

2 に答える 2

1

ここで同様の投稿を参照してください: unix 端末を使用した XML の解析

XML/XSLT に慣れておらず、それを解析することを学びたくない場合は、かなり汚い方法で検索して答えを切り取ることができます。

他のオプション... Xercesパーサーをお勧めしますが、他にもあります。これらの手法の両方が記載されているため、上記のリンクを確認してください。

于 2012-01-23T18:01:40.240 に答える
1

あなたはこのようなことを試すことができます -

var=$(awk -v FS="[ =\"]" '/^<jobStatus/,/\/jobStatus>$/{for (i=1;i<=NF;i++) if ($i~/percentComplete/) print $(i+2)}' file | tail -n 1)
[jaypal:~/Temp] echo $var
12
于 2012-01-23T18:05:26.143 に答える