星期五, 三月 31, 2006

[AWK] 用awk处理较为复杂的数据

一个awk(my.awk)脚本,使用方式: awk -f my.awk data.txt
function strip(s){gsub(/^ *| *$/, "" , s);return s}
function stripColon(s){a=length(":")+index(s ,":");return strip(substr(s, a))}
BEGIN {
    OFS=","
    process=0
    print "名称", "人均消费", "电话", "地址", "菜系" , "特色菜"
}
{
    if(process == 1){
        #print myarray["name"]
        if($1 ~ "查看全部网友评论")
        {
            print myarray["name"], myarray["avg"] , myarray["tel"], myarray["add"], myarray[ "ser"], myarray["spe"]
            delete myarray
        }
        else if($1 ~ "查看餐馆详细信息" || $1 ~ "向朋友推荐" || $1 ~ "挑错或补充信息" || $1 ~ "网友打分" || $1 ~ /口味/) { }
        else if($1 ~ "满分为10分")
        {
            myarray["avg"] = stripColon($2)
        }
        else if($0 ~ /菜[ ]+系/)
        {
            myarray["ser"] = stripColon($0)
        }
        else if($1~/特色菜/)
        {
            myarray["spe"] = stripColon($0)
        }
        else if($0~/电[ ]+话/)
        {
            myarray["tel"] = stripColon($0)
        }
        else if($0~/地[ ]+址/)
        {
            myarray["add"] = stripColon($0)
        }
        else if($1 ~ /共搜索到/)
        {
            process = 0
        }
        else if(length($1)>1)
        {
            myarray["name"] = strip($0)
        }
    }
    else if( $1 ~ /共搜索到/)
    {
        process = 1
    }
}

要处理的数据文件(data.txt):
--------------------------
餐厅搜索_XX生活_XX网            
>&gt 进入饮食频道  

      
  
    

  
搜索全国65356家餐馆  
城市:  选择城市 上海 北京 广州 深圳 成都 重庆 天津 杭州 南京 苏州 宁波 扬州 无锡 福州 厦门 武汉 西安 沈阳 大连 青岛 济南 海南 其它城市    

区域:      

菜系:      
餐厅 地址  


    
  
    

条件:   全部 菜系 口味 材料 做法  

类别:  全部  

    
    
  

  
    
        
  现在位置: 新浪生活 > 全国万家餐馆搜索    
共搜索到 26 家餐馆  共 5 页  页码: 1 | 2 | 3 | 4 | 5 |  上一页 | 下一页      
    
美炉村北四环店    
  
网友打分   
                          
                          口味: 环境: 服务:
(满分为10分)  平均分: 人均消费:  
      
菜  系: 江西    
特色菜: 煨南瓜 铁板蒜香鱼 农家豆腐
电  话: 88457838
地  址: 昆明湖南路四海桥空军指挥学院北门
  挑错或补充信息
向朋友推荐
查看餐馆详细信息
查看全部网友评论
    
美炉村苏州街店    
  
网友打分   
                          
                          口味: 环境: 服务:
(满分为10分)  平均分: 人均消费:  
      
菜  系: 江西    
特色菜: 煨南瓜 铁板蒜香鱼 农家豆腐
电  话: 62538883
地  址: 苏州街11号
  挑错或补充信息
向朋友推荐
查看餐馆详细信息
查看全部网友评论
    
赣江源甲鱼村    
  
网友打分   
                          
                          口味: 环境: 服务:
(满分为10分)  平均分: 人均消费:  
      
菜  系: 江西 湖南    
特色菜: 红煨甲鱼,啤酒鸭.
电  话: 82473115
地  址: 西北旺永丰路1号
  挑错或补充信息
向朋友推荐
查看餐馆详细信息
查看全部网友评论
    
民间瓦罐煨汤馆亚运村店    
  
网友打分   
                          
                          口味: 环境: 服务:
(满分为10分)  平均分: 人均消费:  
      
菜  系: 江西    
特色菜: 排骨莲藕汤 笋干肥肠
电  话: 64868811
地  址: 亚运村慧忠北里411楼1层(大屯路北辰东路交叉路口)
  挑错或补充信息
向朋友推荐
查看餐馆详细信息
查看全部网友评论
    
汉方阁    
  
网友打分   
                          
                          口味: 环境: 服务:
(满分为10分)  平均分: 人均消费:  
      
菜  系: 江西    
特色菜: 瓦罐煨汤 井冈山腌笋 红烧肉
电  话: 66131808
地  址: 西什库大街31号
  挑错或补充信息
向朋友推荐
查看餐馆详细信息
查看全部网友评论
    
赣江龙    
  
网友打分   
                          
                          口味: 环境: 服务:
(满分为10分)  平均分: 人均消费:  
      
菜  系: 江西    
特色菜: 赣南小鱼、江西佬佬笋、乡村炖活鱼、赣味回锅肉
电  话: 88389389
地  址: 西直门外大街141号
  挑错或补充信息
向朋友推荐
查看餐馆详细信息
查看全部网友评论
        
共搜索到 26 家餐馆  共 5 页  页码: 1 | 2 | 3 | 4 | 5 |  上一页 | 下一页          

--------------------------

处理后的结果:
--------------------------
名称,人均消费,电话,地址,菜系,特色菜
美炉村北四环店,,88457838,昆明湖南路四海桥空军指挥学院北门,江西,煨南瓜 铁板蒜香鱼 农家豆腐
美炉村苏州街店,,62538883,苏州街11号,江西,煨南瓜 铁板蒜香鱼 农家豆腐
赣江源甲鱼村,,82473115,西北旺永丰路1号,江西 湖南,红煨甲鱼,啤酒鸭.
民间瓦罐煨汤馆亚运村店,,64868811,亚运村慧忠北里411楼1层(大屯路北辰东路交叉路口),江西,排骨莲藕汤 笋干肥肠
汉方阁,,66131808,西什库大街31号,江西,瓦罐煨汤 井冈山腌笋 红烧肉
赣江龙,,88389389,西直门外大街141号,江西,赣南小鱼、江西佬佬笋、乡村炖活鱼、赣味回锅肉
--------------------------

0 Comments:

发表评论

<< Home