日志统计常用shell命令

1.读取当前目录后缀名为.php的文件数

find *.php -type f | wc -l

2.搜索后缀名为.log文件的每一行中,含有“url=\/abc”的字符串,并根据“=”划分,读取第二列后,将第二列数据根据“/”划分,并读取第4列数据,最后重定向到all.log文件中。

grep -r “url=\/abc” *.log | cut -f 2- -d = | cut -f 4 -d / >all.log

3.读取当前目录是否存在后缀名为.log的文件,有返回true,无返回false

test -e ./*.log

4.文件file.log内容如下:

http://www.sohu.com/aaa

http://www.sina.com/111

http://www.sohu.com/bbb

http://www.sina.com/222

http://www.sohu.com/ccc

http://www.163.com/zzz

http://www.sohu.com/ddd

统计每个域名出现次数:
http://www.sohu.com 4
http://www.sina.com 2
http://www.163.com 1

shell命令: awk -F / ‘{a[$3]++} END{for(i in a){print i,a[i] | “sort -r -k 2″}}’ file.log;

解释:

-F参数是制定awk分隔符,这里制定的是 /,所以每行被分成4个部分。
sort 的-r是降序,-k是按照第几组字符排序,从1开始。
a可以理解成key-value形式的对象,域名做key 个数做value。
在end动作里完成对结果a的打印,

注意:这个方法还可以用来统计日志中响应时间等等。

5.统计文件里面特定字符串出现次数

第一种方法:使用grep命令进行统计

grep -o ‘字符串’ file |wc -l

第二种方法:使用awk命令进行统计

awk -v RS=”@#$j” ‘{print gsub(/字符串/,”&”)}’ file

第三种方法:另一种使用awk命令进行统计的方法

awk ‘{s+=gsub(/字符串/,”&”)}END{print s}’ file
测试如下:
cat test
select select
select

grep -o ‘select’ test |wc -l
3

awk -v RS=”@#$j” ‘{print gsub(/select/,”&”)}’ test
3

awk ‘{s+=gsub(/select/,”&”)}END{print s}’ test
3

6.test文件如下:
cat test
10.1.1.1 10000089
10.1.1.2 99877008
10.1.1.3 488650
10.1.1.1 20789786
10.1.1.3 907675765

[root@oracle shell_exmple]# awk ‘{a[$1]}END{for(i in a)print a[i]}’ test

[root@oracle shell_exmple]# awk ‘{a[$1]}END{for(i in a)print i}’ test
10.1.1.3
10.1.1.1
10.1.1.2
awk ‘{a[$1]++}END{for(i in a)print i,a[i]| “sort -r -k 2″}’ test
10.1.1.3 2
10.1.1.1 2
10.1.1.2 1
[root@oracle shell_exmple]# awk ‘{a[$1]=a[$1]+$2} END{for(i in a)print a[i]/1024/1024″MB”,i}’ test | sort -nr
866.093MB 10.1.1.3
95.2501MB 10.1.1.2
29.3635MB 10.1.1.1

打赏此文

如果您觉得本站的内容对您有所帮助,您可以扫描下面的二维码小额支付请我喝杯茶,感谢!打赏记录
支付宝
微信
承诺:凡打赏捐助的朋友,留言备注自己的邮箱,在打赏捐助时间点的6个月内,本站会每周邮件推送原创专业技术博文,供大家学习和参考!

1 条评论

  1. starlight说道:

    正在做后台log文件的处理,学习了!

留下评论

All fields marked (*) are required