摘要: awk是一个非常棒的数字处理工具。相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个“字段”来处理。运行效率高,而且代码简单,对格式化的文本处理能力超强。先来一个例子:   文件a,统计文件a的第一列中是浮点数的行的浮点数的平均值。用awk来实现只需要一句话就可以搞定 $cat a 1.021 33 1#.ll 44 2.53 6 ss 7 awk 'BEGIN{total = 0;len = 0} {if($1~/^[0-9]+\.[0-9]*/){total += $1; len++}} END{print total/len}' a (分析:$1~/^[0-9]+\.[0-9]*/表示$1与“/ /”里面的正则表达式进行匹配,若匹配,则total加上$1,且len自增,即数目加1.“^[0-9]+\.[0-9]*”是个正则表达式,“^[0-9]”表示以数字开头,“\.”是转义的意思,表示“.”为小数点的意思。“[0-9]*”表示0个或多个数字) 阅读全文
posted @ 2011-12-06 20:32 东方雨中漫步者 阅读(97085) 评论(0) 推荐(4) 编辑