读书人

shell脚本分析网站日记步骤

发布时间: 2013-11-23 10:52:51 作者: rapoo

shell脚本分析网站日志步骤
1cd?d:?或?cd?/cygdrive/d/

如日志在d盘weblog文件夹,那使用指令:

1cd?/cygdrive/d/weblog/

返回上级目录:

1cd?..

返回底层目录:

1cd?~

注:cygwin的默认文件夹是cygwin安装文件中home/administrator文件夹,可以通过指令来修改默认文件夹,具体指令请上网搜索。

二、ls指令:显示目前文件夹中所有文件

比如当前路径是在/d/weblog/

1ls?-a,?all?/d/weblog

就可以显示出/d/weblog/中所有文件。

三、cat指令:连接文件

当几个日志需要连接融合时,需要用到cat指令,cat的全称是concatenate,为连接之意,如我想看4月份的日志情况,需要用到ex120401.log,?ex120402.log,?ex120403.log…等日志文件,我可以使用下列指令:

1cat?ex12*.log?>?april.log

那么4月的所有日志文件就会合为april这一个文件了。

注:

1、ex12*.log中的*号为通配符,可代表所有字母或数字。

2、cat?ex12*.log>?april.log后面的“>?april.log”代表把日志文件导出为一个名为april.log的文件,如果没有“april.log”,那所有的数据只会在编辑器中出现,并不导出。

四、grep指令:提取文件中的部分数据

1grep?A?B.log?>C.log

其中A是要在文件中提取的数据,比如要提取百度蜘蛛数据,那这里就是Baiduspider;B.log指的是要提取的目标文件,比如上面的april.log;C.log是提取出的数据要导出的文件,比如要把数据导出为baidu.log,那这里就应该为baidu.log。下面是一个例子,要提取april.log文件中百度蜘蛛数据,并导出为aprilbaidu.log,指令为:

1grep?Baiduspider?april.log?>aprilbaidu.log????????

注:

1、grep的提取是找到相应的数据,并把整行数据都提取出来。

2、大小写不能搞错。

5月17日补充:

1grep?-v:排除指令

grep?-v排除不需要的数据,跟grep用法正好相反。

五、awk指令:分割相应的列数据

12012-04-29?00:03:03?GET?/ask/m140.html?-?80?-?220.181.108.100?HTTP/1.1?Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)?-?-?www.mengtiankong.com?200?0?0?5149?327?15

以上是百度蜘蛛抓取小站的日志情况,根据中间的空格可以分为19列(根据日志设置各有不同),awk可以单独提取出其中的某一列,比如要单独提取出其中的时间和URL:

1awk?‘{print?$2,$4}’?aprilbaidu.log?>?url.log

其中的$2,$4是所对应的列数,aprilbaidu.log是要分割的文件,url.log是相应数据的导出文件。

六、sort指令:排序

这个就是简单的排序,如果本来是按照原来的顺序,“1,2,9,5,1,2,6,4”,那么使用sort之后将是“1,1,2,2,4,5,6,9”。

另外,sort?nr?按照降序排列。

七、uniq指令:对数据进行汇总

这个只用uniq?c,表示周围数据排序整理,比如经过sort排序后是这样的

1234567/ask1/???/ask1/????/ask1/????/ask2/

那么使用uniq?c后会变为这种:

1233?/ask1/???1?/ask2/

注:由于uniq?c只能对周围数据排序整理,所以需要先对数据sort排序处理。

八、|符号的使用

|符号表示把后面的指令用在前面的文件上,比如

1cat?ex*.log?|grep?Baiduspider?>baidu.log

标题将所有ex开头的log文件融合,然后提取出其中包含Baiduspider的部分。

九、常用shell指令汇总

1、把百度蜘蛛数据提取出来

1grep?Baiduspider?ex*.log?>baidu.log

2、调取不重复抓取URL数据,并按照降序排列

1awk?‘{print?$7}’?baidu.log?|sort|uniq?c|sort?nr>zhuaqu.log

3、调取爬虫IP,并按照降序排列

1awk?‘{print?$11}’?baidu.log?|sort|uniq?c|sort?nr>zhuaqu.log

4、调取返回码,并按照降序排列

1awk?‘{print?$17}’?baidu.log?|sort|uniq?c|sort?nr>zhuaqu.log

?

读书人网 >开源软件

热点推荐