SHELL命令分组统计
时间:2022-07-24
本文章向大家介绍SHELL命令分组统计,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
从一个访问日志中,找出访问最多的IP所有访问的URL列表。
这是一个真实的面试题,目的在考察SEHLL基础的使用。对于这个日志所需要关注的信息只有IP和URL。
127.0.0.1 /user/add
127.0.0.3 /user/add
127.0.0.2 /user/add
127.0.0.2 /user/update
127.0.0.2 /user/delete
首先需要找出访问最多的IP,awk可以对文本进行分割
awk '{print $1}' access.log
127.0.0.1
127.0.0.3
127.0.0.2
127.0.0.2
127.0.0.2
排序和去重统计
awk '{print $1}' access.log |sort|uniq -c
1 127.0.0.1
3 127.0.0.2
1 127.0.0.3
此时需要从中选出统计值最大的IP,把整个列表按降序排序,然后取其中第一个。
awk '{print $1}' access.log |sort|uniq -c |sort -nr
3 127.0.0.2
1 127.0.0.3
1 127.0.0.1
取出后,再次用awk进行,分割。
awk '{print $1}' access.log |sort|uniq -c |sort -nr |head -1|awk '{print $2}'
127.0.0.2
如此访问最大的IP则出来了,再次使用grep则可以找出它所访问的列表。
【扩展】
简单的次数统计思路可以使用 sort 和 uniq来做,awk的功能其实更强大。
awk '{ s[$1]++;} END { max=0;ip="";for(i in s) { if(max <= s[i]) ip=i ;} print ip}' access.log
首先进行分组统计,END后进行循环找出其中次数最多的IP。一个命令直接搞定。
这里是单个次数的相加,如果有需要进行日志中进行数值的分组统计,也是可以的。
127.0.0.1 10
127.0.0.3 20
127.0.0.2 1
127.0.0.2 2
127.0.0.2 2
对IP后的值进行统计相加则是
$ awk '{ s[$1]+=$2;} END { for(i in s) { print i" "s[i] }}' sum.log
127.0.0.1 10
127.0.0.2 5
127.0.0.3 20
很多时候Excel透视图不熟悉,顺手就用SHELL搞定了。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP全局使用Laravel辅助函数dd
- 在laravel中实现ORM模型使用第二个数据库设置
- laravel5.1 ajax post 传值_token示例
- Laravel框架处理用户的请求操作详解
- Laravel实现ORM带条件搜索分页
- Laravel等框架模型关联的可用性浅析
- laravel5.6中的外键约束示例
- Yii框架核心组件类实例详解
- Python 绘制可视化折线图
- Laravel (Lumen) 解决JWT-Auth刷新token的问题
- PHP单元测试配置与使用方法详解
- Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
- laravel 查询数据库获取结果实现判断是否为空
- 浅析PHP中的 inet_pton 网络函数
- php解压缩zip和rar压缩包文件的方法