发现更大的SEO世界
 找回密码
 注册
搜索
»首页»SEO培训 SEO论坛 SEO交流 帖子
发新帖
AIR_seoqx,希望在SEO前线的乐土中,真正享受SEO的滋润。    

个人总结处理日志常用的shell命令

      处理日志是SEOer必备的工作内容之一,往往需要数据化一些日志维度,并加以对网站的蜘蛛抓取和运营情况,有个客观而全面的认识。shell在处理服务器日志中,就能体现出专有的优势。个人在工作总结了一些常用的命令,希望对大家有所帮组。由于学习shell时间不长,如有不对的地方,多多指点!

处理日志常用到一些操作命令和参数

文本处理基本命令
cd 盘符
dir 显示文件夹
less 打开大文件
cat 合并文件

grep文本搜索命令+参数+匹配字符+文件名
-i 不区分大小写
-v 不符合条件的所有行
-c 符合条件的行数
grep 正则表达式

head&tail提取数据前几行和后几行
head -1000 5.25.log|tail -100 >>nkw.txt

wc 用来统计文本大小、字符多少及行数等
-c 统计文本字节数
-m 统计文本字符数
-l 统计文本行数

sort 用来对文件中的数据排序
sort默认使用的是ASCAll字符集顺序
-n用来按数字排序
-r反向排序

uniq 展示重复行中的一行
-c 在数据前显示改行数据重复的次数。前提一定要用sort排序

split文件分割命令
-行数
-b按字节切割
-C按字节切割,不出现乱码

> >> 重定向

awk 在SEO中最为突出的功能就是支持对字段的处理,可以按照指定字符把每行数据分成字段的形式,然后按照字段数据做出相应的处理。


awk -F pattern {action}
-F 后面跟的是分隔符,也就是指定的符号来对每一行要处理的数据分段,默认空格
pattern /正则/ 关系表达式,模式匹配表达式
{action}要打印数据
$n $0表示整行数据  $NF表示最后一个字段


1.查看**蜘蛛对网站总抓取数量
grep -c 'Baiduspider' filename
awk '/Baiduspider/{print $7}' 2014-05-21.log|wc -l

2.查看百度对网站的唯一抓取量,即查看百度一共抓取了网站多少唯一的URL
grep ‘Baiduspider’filename.log|awk {print$7}|sort|uniq|wc -l

3.查看百度抓取最多的前n个页面,并查看每个页面抓取的次数
awk '/Baiduspider/{print $7}'filenma|sort|uniq -c|sort -nr|head -20

4.统计百度抓取网站各个状态码的数量
awk '/Baiduspider/{print $9}' filename|sort|uniq -c|sort -nr

ip查询
5.spiderip抓取的详细页面
awk '/Baiduspider/{print $1 $7}' 2014-05-21.log|sort|uniq -c|sort -nr

6.统计spider 每个ip抓取总量
awk '/Baiduspider/{print $1 }' 2014-05-21.log|sort|uniq -c|sort -nr

7.统计spider 每个ip
awk '/Baiduspider/{print $1 }' 2014-05-21.log|sort|uniq|sort -nr
awk '/Baiduspider/{print $1 }' 2014-05-20.log|sort -n|uniq -c 排序更好一些

8.统计时间段的ip
awk '/Baiduspider/{print $1 $4}' 2014-05-21.log|sort|uniq -c|sort -nr

9.查询某个目录总抓取量
grep -i "/z/" 5.4.log|awk '{print $4}'|sort|wc -l

10.查询某个目录总抓取量
grep -i "/z/" 5.4.log|awk '{print $4}'|sort|uniq|wc -l

评分

参与人数 7赞同 +28 收起 理由
酱油 + 4 赞一个!
沉醉 + 4 新手学习一下
奋斗 + 4 很给力!
c0901yuan + 4 挺好的。看了
姜姜 + 4 继续努力
莫山 + 4 第10个是某个目录的不重复总抓取量.
ZERO + 4 和前面的重复度较高,尽量避免同类贴.

查看全部评分

发表于 2014-5-27 13:55:36
回复 收藏
沉醉,能够专注且坚持做一个网站不容易,三心二意一事无成。    

初学shell 只会用CD 看到这些收藏起来。
发表于 2014-6-5 14:09:44
回复 收藏
奋斗,战斗力只有0.05渣渣    

收藏  新手 好用也实用
发表于 2014-6-5 15:37:33
回复 收藏
老狼,老狼博客 www.lanzhihui.com    [ 版主 ]

发表于 2014-6-5 15:51:02
回复 收藏
c0901yuan,一直喜欢 用c0901yuan  做网名。    

2014-06-05 00:00:24 W3SVC1001 103.242.132.184 GET /define.aspx ProductShow&cid=1805 80 - 37.58.100.89 Mozilla/5.0+(compatible;+AhrefsBot/5.0;++http://ahrefs.com/robot/) 200 0 0

问下这样的  要 统计百度抓取网站各个状态码的数量

应该怎么写?
发表于 2014-6-6 21:06:14
回复 收藏
AIR_seoqx,希望在SEO前线的乐土中,真正享受SEO的滋润。    

c0901yuan 发表于 2014-6-6 21:06
2014-06-05 00:00:24 W3SVC1001 103.242.132.184 GET /define.aspx ProductShow&cid=1805 80 - 37.58.100.8 ...

就以统计百度的为例 awk ‘/Baiduspider/{print $10}’baidu.log|sort|uniq -c|sort -n   或者sort -nr 。$10这个可以根据你日志的格式调整。如果用光年拆分过,这些字段的位置是不一样的。希望能帮到你!
 楼主| 发表于 2014-6-6 22:39:33
回复 收藏
c0901yuan,一直喜欢 用c0901yuan  做网名。    

AIR_seoqx 发表于 2014-6-6 22:39
就以统计百度的为例 awk ‘/Baiduspider/{print $10}’baidu.log|sort|uniq -c|sort -n   或者sort -nr  ...

{print $10}  不懂这个含意  
发表于 2014-6-6 23:00:40
回复 收藏
why,请到个人资料页面设置个人签名    

c0901yuan 发表于 2014-6-6 21:06
2014-06-05 00:00:24 W3SVC1001 103.242.132.184 GET /define.aspx ProductShow&cid=1805 80 - 37.58.100.8 ...

awk '{print $12}' baidu.log |sort |uniq -c

$12是状态码
baidu.log 是百度抓取的文件
发表于 2014-6-18 22:15:42
回复 收藏
快速回复 返回顶部 返回列表