注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

awk高级部分  

2010-07-21 22:29:46|  分类: shell编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
我的校内中的文章已经写过awk的使用了
这次我们开始玩复杂一点

条件操作符
<   >=  <=  ==  !=
~   匹配正则表达式
!~ 不匹配正则表达式

逻辑操作符
&& || !

例子
解析apache日志文件
统计 210-219网段的访问量  awk  '{if($1 ~ /^21[0-9]/) print $0 }'   www.log  | wc -l
非210-219网段的访问量 awk '{if($1 !~ /^21[0-9]/) print $0}' www.log | wc-l
2010年7月22日的访问量 awk '{if($4 ~/^\[22\/Jul\/2010/ ) print $0}' www.log | wc -l
2010年7月22日的/html/free_call.php访问量
awk '{if($4 ~ /^\[22\/Jul\/2010) print $0}' www.log | awk '{if($7=="/html/free_call.php") print $0}' | wc -l

www.log的内容
  awk高级部分 - zhenghaoju700 - zhenghaoju700 的博客


AWK的内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 分割符
NF 域的个数
NR 当前行数
OFS 输出域分割符
ORS 输出记录的分隔符
RS 控制记录的分隔符

例子
awk -F  '#'  '{print NF,NR,ENVIRON["username"],$0,FILENAME,ARGC,ARGV[0],ARGV[1]}'  hurry.txt


AWK 中的字符串函数
gsub(r,s)    在整个$0中用s替代r
gsub(r,s,t)  在整个t中用s代替r
index(s,t)    返回s中字符串t的第一个位置
length(s)     返回s的长度
match(s,r)   测试s是否包含r的字符串
split(s,a,fs)  用fs上将s分成序列a
sprint(fmt,exp)   按fmt的格式打印exp
sub(r,s)             
substr(s,p)
substr(s,p,n)

例子
awk -F '#'  '{if(gsub("#","||")) print $0 }' hurry.txt
awk -F '#'  '{if(gsub("s","S",$2)) print $2 }' hurry.txt

awk -F '#'  '{ print (index($2,"e")) print $2 }' hurry.txt
awk -F '#'  '{ print (length($2)) }'  hurry.txt

AWK的转义字符
\b \t \n \r


awk数组

awk 'BEGIN{split("hurry#hj#op",array2,"#");print array2[1]}'

脚本

#!/bin/awk -f

希望大家多加练习


  评论这张
 
阅读(157)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017