Unix Programming - AWK - regular expression

This is Interesting: Free IT Magazines  
Home > Archive > Unix Programming > December 2005 > AWK - regular expression





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author AWK - regular expression
friend_05

2005-12-30, 5:55 pm

Hi,


I want to extract some data from following file.xml


can anyone suggest how can I do using AWK
---------------------------------------------------------------------------=
=AD------------------------------------------------------------



name=3D"CVE-2005-0001" seq=3D"2005-0001"
discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"High">


name=3D"CVE-2005-0002" seq=3D"2005-0011"
discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"High">


name=3D"CVE-2005-0021" seq=3D"2005-0101"
discovered=3D"2005-03-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"low">


name=3D"CVE-2005-0000" seq=3D"2005-1001"
discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"medium">


---------------------------------------------------------------------------=
=AD------------------------------------------------------------



I want the ouput in following manner.


name severity

CVE-2005-0001 High
CVE-2005-0002 High
CVE-2005-0021 low=20
CVE-2005-0000 medium

shakahshakah@gmail.com

2005-12-31, 2:51 am

friend_05 wrote:
> Hi,
>
>
> I want to extract some data from following file.xml
>
>
> can anyone suggest how can I do using AWK
> -------------------------------------------------------------------------=

--=AD------------------------------------------------------------
>
>
>
> name=3D"CVE-2005-0001" seq=3D"2005-0001"
> discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
> severity=3D"High">
>
>
> name=3D"CVE-2005-0002" seq=3D"2005-0011"
> discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
> severity=3D"High">
>
>
> name=3D"CVE-2005-0021" seq=3D"2005-0101"
> discovered=3D"2005-03-12" published=3D"2005-05-02" modified=3D"2005-10-20"
> severity=3D"low">
>
>
> name=3D"CVE-2005-0000" seq=3D"2005-1001"
> discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
> severity=3D"medium">
>
>
> -------------------------------------------------------------------------=

--=AD------------------------------------------------------------
>
>
>
> I want the ouput in following manner.
>
>
> name severity
>
> CVE-2005-0001 High
> CVE-2005-0002 High
> CVE-2005-0021 low
> CVE-2005-0000 medium


If you really buy into the XML vision you can use XSL to get to a
reliable format on which to use awk, e.g. something like:

jc@sarah:~/tmp$ cat exploits.xml
<?xml version=3D"1.0" encoding=3D"ISO-8859-1"?>
<exploits>
<exploit
name=3D"CVE-2005-0001" seq=3D"2005-0001"
discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"High"/>
<exploit
name=3D"CVE-2005-0002" seq=3D"2005-0011"
discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"High"/>
<exploit
name=3D"CVE-2005-0021" seq=3D"2005-0101"
discovered=3D"2005-03-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"low"/>
<exploit
name=3D"CVE-2005-0000" seq=3D"2005-1001"
discovered=3D"2005-01-12" published=3D"2005-05-02" modified=3D"2005-10-20"
severity=3D"medium"/>
</exploits>

jc@sarah:~/tmp$ cat exploits-csv.xsl
<?xml version=3D"1.0" encoding=3D"ISO-8859-1"?>
<xsl:transform version=3D"1.0"
xmlns:xsl=3D"http://www.w3.org/1999/XSL/Transform">
<xsl:output method=3D"text"/>
<xsl:template match=3D"/">
<xsl:for-each select=3D"exploits/exploit">
<xsl:value-of select=3D"@name"/><xsl:text>,</xsl:text><xsl:value-of
select=3D"@severity"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:transform>

jc@sarah:~/tmp$ xsltproc exploits-csv.xsl exploits.xml
CVE-2005-0001,High
CVE-2005-0002,High
CVE-2005-0021,low
CVE-2005-0000,medium

jc@sarah:~/tmp$ xsltproc exploits-csv.xsl exploits.xml \
> | awk 'BEGIN { FS=3D","; printf("name\tseverity\n") } { printf("%s\t%s\n"=

, $1, $2) }'
name severity
CVE-2005-0001 High
CVE-2005-0002 High
CVE-2005-0021 low
CVE-2005-0000 medium

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com