冷寒生 发表于 2013-04-11 07:13

用grep + awk命令分析网站日志文件

Linux最爽的地方就是可以通过组合各种小工具来实现强大的功能,现在总算有些体会了。

在Windows下要想分析网站日志文件怎么办?很遗憾,您只能自己写程序来实现了。而在Linux下,就很简单了。

比如我要查看某网站中百度蜘蛛的爬行记录,那么我可以使用以下命令:

cat access.log | grep "Baiduspider" | awk '{printf("%-25s%-60s%-20s%-5s\n",$4,$7,$9,$10)}'

其中“access.log”是网站的日志文件;“grep”是在日志文件中进行搜索;awk是格式化输出,使用方法与C中的printf相同。

贴一下该命令的输出格式:

[10/Jun/2012:08:10:18    /gps/1/feed                                                 200               41941
[10/Jun/2012:08:10:21    /86.html/feed                                             200               838
[10/Jun/2012:08:10:22    /gps/4/feed                                                 200               39231
[10/Jun/2012:08:10:25    /8.html/feed                                                200               810
[10/Jun/2012:08:10:25    /51.html/feed                                             200               839
[10/Jun/2012:08:10:29    /103.html/feed                                              200               849
[10/Jun/2012:08:10:29    /114.html/feed/atom                                       200               721
[10/Jun/2012:08:10:33    /103.html/feed/atom                                       200               762
[10/Jun/2012:08:10:33    /94.html/feed/atom                                          200               709
[10/Jun/2012:08:10:37    /108.html/feed/atom                                       200               761
[10/Jun/2012:08:10:37    /99.html/feed/atom                                          200               736
[10/Jun/2012:08:10:41    /96.html/feed/atom                                          200               721
[10/Jun/2012:08:10:41    /112.html/feed/atom                                       200               759
[10/Jun/2012:08:10:45    /110.html/feed/atom                                       200               738
[10/Jun/2012:08:10:45    /101.html/feed/atom                                       200               753
[10/Jun/2012:08:10:49    /105.html/feed/atom                                       200               706
[10/Jun/2012:08:10:50    /gps/10/feed                                                200               39345
[10/Jun/2012:08:10:53    /gps/14/feed                                                200               12972
[10/Jun/2012:08:10:53    /99.html/feed                                             200               824
[10/Jun/2012:08:10:57    /40.html/feed                                             200               803
[10/Jun/2012:08:10:57    /21.html/feed                                             200               812
[10/Jun/2012:08:11:01    /author/jjxiaoyan/page/2                                    200               6409
[10/Jun/2012:08:11:01    /author/jjxiaoyan/page/5                                    200               5076
[10/Jun/2012:08:11:05    /author/jjxiaoyan/feed                                    200               59261
[10/Jun/2012:08:11:06    /author/jjxiaoyan/page/3                                    200               6316
[10/Jun/2012:08:11:07    /author/jjxiaoyan/page/4                                    200               6487
[10/Jun/2012:08:11:11    /92.html/feed                                             200               818
[10/Jun/2012:08:11:11    /65.html/feed                                             200               818
[10/Jun/2012:08:11:15    /78.html/feed                                             200               845
[10/Jun/2012:08:11:15    /23.html/feed                                             200               806
[10/Jun/2012:08:11:19    /34.html/feed                                             200               815
[10/Jun/2012:08:11:19    /76.html/feed                                             200               806
[10/Jun/2012:08:11:23    /71.html/feed                                             200               809
[10/Jun/2012:08:11:23    /67.html/feed                                             200               812
[10/Jun/2012:08:11:27    /60.html/feed                                             200               809
[10/Jun/2012:08:11:27    /57.html/feed                                             200               812
[10/Jun/2012:08:11:31    /date/2012/06/                                              301               5
[10/Jun/2012:08:11:31    /date/2012/06                                             200               10541
[10/Jun/2012:08:11:32    /date/2012/05/                                              301               5
[10/Jun/2012:08:11:33    /date/2012/05                                             200               10874
[10/Jun/2012:10:19:57    /                                                         200               12831

sk1418 发表于 2013-04-14 06:50

首先恭喜你获得了UUoC奖! 嘿嘿,链接:http://partmaps.org/era/unix/award.html

其次,如果你的grep 中正则不用-P,或者grep的一些特有特性,的话,完全可以合并到awk里来。这样,你3个进程就成了一个进程了:awk '/Baiduspider/{printf("%-25s%-60s%-20s%-5s\n",$4,$7,$9,$10)}' access.log输出应该和你的一样。
页: [1]
查看完整版本: 用grep + awk命令分析网站日志文件