博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计日志中ip登录次数
阅读量:4115 次
发布时间:2019-05-25

本文共 1016 字,大约阅读时间需要 3 分钟。

cat logs/baidu.access.log | awk '{print $(NF-1)}' | sort | uniq -c | sort -k 1 -n -r|head -10

解释一下上面的命令,

cat logs/baidu.access.log就是输出我要统计的日志。

awk后面跟一个指令,awk '{print $(NF-1)}'就是打印出日志内容的第几列。$1就是第一列,$(NF)就是总列数,那么我要根据倒数第二列统计,就是$(NF-1)。

sort就是对内容进行排序,默认是自然顺序排序。

uniq指令用于排重,而是只适用于相邻两行相同的情况。所以一般结合sort使用。即先sort排序再排重。

uniq -u是只显示唯一的记录行。uniq -c是显示有重复记录的情况。

sort -k 1 -n -r这个指令,参看下面sort指令参数的详细说明

sort选项与参数:

-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b  :忽略最前面的空格符部分;
-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的数据中,仅出现一行代表;
-t  :分隔符,默认是用 [tab] 键来分隔;
-k  :以哪个区间 (field) 来进行排序的意思

所以 sort -k 1 -n -r 指令的意思就是对第一列按照纯数字逆序排序。

这个纯数字是哪里来的呢?是uniq -c来的,原来剩下一列就是IP了,当执行uniq -c指令时,它会统计重复记录的次数并把这次数显示在第一列。所以现在有两列了,第一列是重复次数,第二列是IP。所以这里是按照重复次数排序。

head -10,显示前10行。

同理,如果你要统计URL的访问情况就awk url那一列就行了。

有一个文件ip.txt,每行一条ip记录,共若干行,哪个命令可以实现“统计出现次数最多的前3个ip及其次数”?

sort ip.txt | uniq -c | sort -rn | head -n 3

首先sort进行排序,将重复的行都排在了一起,然后使用uniq -c将重复的行的次数放在了行首,在用sort -rn进行反向和纯文本排序,这样就按照重复次数从高到低进行了排列,最后利用head -n 3 输出行首的三行。

 

转载地址:http://mqypi.baihongyu.com/

你可能感兴趣的文章
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
Linux设备模型(总线、设备、驱动程序和类)之四:class_register
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
弱类型、强类型、动态类型、静态类型语言的区别是什么?
查看>>
Struts2技术内幕图书 转载
查看>>
Java异常分类
查看>>
项目中的jackson与json-lib使用比较
查看>>