Разбор файла журнала с использованием grep - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть файл журнала, который мне нужно проанализировать, чтобы получить три значения: RSSUrl, RSSCategory и Url val, я могу получить каждое из этих значений по отдельности, но не могу понять, как собрать все три значения вместе, поэтому у меня есть контекст каждого.

Вот основной формат файла:

    <key id="1" goodness="0" softCached="false" hits="0" creationMillis="1327941760709"       creationMillisAgo="-978" lastHitMillisAgo="INF" size="0" numRows="30" cache_type="L2" limit="1" type="data">
    <filters>
        <filter attr="Community/RSSCategory" value="Jeep"/>
            <filter attr="Community/RSSUrl" value="http://blogs.int.automotive.com/getrequest.php?url=http://blogs.automotive.com/"/>
        <filter attr="Community/NamespaceLookupCommunity"/>
        <filter attr="Krang/NamespaceLookupKrang"/>
    </filters>
    <params>
        <param name="CacheLifeSeconds" value="300"/>
        <param name="LIMIT" value="1"/>
        <param name="ReturnColumns" value="Title,Url,PublishDate,Description,ImageUrl"/>
        <param name="START" value="0"/>
    </params>
    <returns>
        <return attr="Community/RSSResult"/>
    </returns>
    <orders>
        <order attr="Krang/PublishDate" type="DESC"/>
    </orders>
    <keyString>
        [[data,filters=[Community/RSSUrl,Community/NamespaceLookupCommunity,Krang/NamespaceLookupKrang],params=[LIMIT,START],return=[Community/RSSResult],order=[Krang/PublishDate-]],start=0,limit=1]
    </keyString>
</key>
<keyend id="1" nowMillis="1327941760713" queryTimeNanos="115132">
<cached type="L1"/><CallContext>    <ServerName val="WEB-059" />
    <ServerId val="ȯ" />
    <PageName val="Default+%2F+Default" />
    <ClientIp val="10.1.12.111" />
    <Url val="http%3A%2F%2Fwww.automobilemag.com%2Findex.html" />
</CallContext></keyend>

Я пробовал это grep -E '<filter attr=' rssurl.txt |grep -E '<Url val' rssurl.txt

Но это не сводит все воедино. Есть мысли?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Обратите внимание, что регулярные выражения плохо разбирают XML . Вместо этого используйте синтаксический анализатор XML.

0 голосов
/ 01 февраля 2012
grep -E '\<filter attr\=\"Community\/RSSUrl|\<filter attr\=\"Community\/RSSCategory|\<Url val' a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...