awk解析xml

?xml version="1.0"?>
<system>
   <machine name="web01" >
         <server name="log_collect">
            <processes>1</processes>
            <threads>1</threads>
            <options>-t1 </options>
            <desc/>
         </server>
         <server name="dcs_fresh">
            <processes>1</processes>
            <threads>1</threads>
            <options>-a192.168.1.1</options>
            <desc/>
         </server>
   </machine>
   <machine name="web02">
         <server name="log_collect">
            <processes>2</processes>
            <threads>2</threads>
            <options>-t2 </options>
            <desc/>
         </server>
         <server name="dcs_fresh">
            <processes>2</processes>
            <threads>2</threads>
            <options>-a192.168.1.2</options>
            <desc/>
         </server>
   </machine>
BEGIN{FS="[<>\"]"}
/machine name/{a=$3}
/server name/{b=$3}
/>.*</{c=c?c" "$3:$3}
/<\/server>/{print a" "b" "c;b=0;c=0}
[sunsweet@ubuntu:~/shell/monitor]>>awk -f xml.awk xml
web01 log_collect 1 1 -t1 
web01 dcs_fresh 1 1 -a192.168.1.1
web02 log_collect 2 2 -t2 
web02 dcs_fresh 2 2 -a192.168.1.2

 

posted @ 2013-05-26 14:30  sunsweet  阅读(2522)  评论(0编辑  收藏  举报