2017-10-18 10 views
0

xmlから値をデコードしようとしています。以下のサンプルを見つけてください。これは複数のブロックになります。タグを見つけて内容をデコードし、同じ出力を生成する必要があります。私はちょうどスクリプトを開始する過程にあります。xmlの値をシェルを使用してデコードする

<SOAP-ENV:Body> 
<log-entry serial="abcde" domain="abc"> 
<date>Tue Oct 17 2017</date> 
<time utc="abcde">14:14:30</time> 
<type>all</type> 
<class>ccccc</class> 
<object>Web_Token</object> 
<level num="5">notice</level> 
<transaction>xxxxx</transaction> 
<global-transaction-id>xxxxx</global-transaction-id> 
<client>X.X.X.X</client> 
<message> 
<base64>**encodeddata**</base64> 
</message> 
</log-entry> 
</SOAP-ENV:Body> 

i need output 

<SOAP-ENV:Body> 
<log-entry serial="abcde" domain="abc"> 
<date>Tue Oct 17 2017</date> 
<time utc="abcde">14:14:30</time> 
<type>all</type> 
<class>ccccc</class> 
<object>Web_Token</object> 
<level num="5">notice</level> 
<transaction>xxxxx</transaction> 
<global-transaction-id>xxxxx</global-transaction-id> 
<client>X.X.X.X</client> 
<message> 
<base64>**decodeddata**</base64> 
</message> 
</log-entry> 
</SOAP-ENV:Body> 

私は反復処理中ですが、値のデコードを開始しました。

sed -n 's/<base64>\(.*\)<\/base64>/\1/p' log.txt | base64 --decode 

ありがとう。

+0

をし、問題は何ですか? – AlexP

+0

xmlをsedで解析しません。 xmlパーサーをインストールできますか? – RomanPerekhrest

答えて

0

はこのお試しください:

xmllint --xpath '//message/base64/text()' file.xml 2>/dev/null | 
    base64 -d - 
関連する問題