awk是老用老忘记,今天开始系统的做个学习笔记。主要参考A Guided Tour Of Awk
先帖下测试数据吧
66.249.70.76 - - [01/Oct/2007:00:00:00 +0800] "GET /users/show/146659 HTTP/1.1" 200 3550 "-" "Mozilla/5.0
(compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
这是一条来自googlebot的爬虫留下的访问记录。我们把测试数据假设为test.data
那要取出googlebot的访问记录就有以下几种方法
1.grep '+http://www.google.com/bot.html' test.data
2 . awk '/\+http:\/\/www\.google\.com\/bot\.html/'
test.data (关于正则表达式,也需要找时间整理下,这里. 和+都是元字符所以需要转义,而/是因为我们匹配的标志符号使用了/)
所以这里awk和grep实现的功能也是一样的了。
如果我们想得到第七栏的访问地址的话,我们就可以
awk '/+http:\/\/www\.google\.com\/bot\.html/ {print $7}' test.data
如果想知道被googlebot正常访问(header为200)的url
awk '/+http:\/\/www\.google\.com\/bot\.html/ {if ($9=200) print $7}' test.data
如果想知道googlebot从网站上爬走多少流量的
awk 'BEGIN { traffic=0 } /+http:\/\/www\.google\.com\/bot\.html/ {if ($9=200) print $7;traffic+=$10 } END {print traffic}' test.data
今天就写到这里了

没有评论:
发表评论