簡體   English   中英

從日志文件中提取特定的XML

[英]Extract specific XMLs from log file

我有很大的日志文件(每個文件約50mb),其中包含Java調試信息以及各種XML響應

這是我嘗試從日志中提取內容的示例

<envelope>
    <response>
        <ATTR name="uniqueid" value="XYZ_00000-00-00_12345_1"/>
        <ATTR name="status" value="Activated"/>
        <ATTR name="datecreated" value="2018/10/04 09:39:05"/>
    </response>
</envelope>

我只需要其uniqueid屬性包含 “ 12345”且status屬性設置為“ Activated”的XML。

通過使用“ sed”,我能夠提取所有信封,並且當前我正在使用正則表達式檢查其中是否存在上述條件(通過循環運行所有這些條件)。

sed -n '/<envelope>/,/<\/envelope>/p' logfile

從文件中提取我需要的什么是正確的解決方案?

謝謝!

假設您的xml格式如下所示,這應該可以...

$ awk '/<envelope>/ {line=$0; p=0; next} 
             line   {line=line ORS $0} 
    /uniqueid/ && $3~/12345/ {p=1}
   /<\/envelope>/ && p {print line}' file

使用開始標簽,如果發現所需的行設置了標志,則開始累積行;如果設置了標志,則結束標記,開始記錄。

gawk可以代替

$ awk -F'\n' -v RS='</envelope>\n'    \
    '$3~/uniqueid.*12345/ && $4~/status.*Activated/{print $0, RT}' file

會有額外的換行符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM