博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用awk && sed 提取日志中的有效信息
阅读量:7297 次
发布时间:2019-06-30

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

日志信息:

源数据:1.1.1.1 - - [08/Aug/2018:00:00:14 +0800] "GET HTTP/1.1" 200 1306 "" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134"

访问一级目录: 访问来源:


开始处理:

1.先使用awk 提取需要的信息,由于目标站点的域名是固定的 www.test.test 所以这个不做判断,只判断访问来源和访问状态
#取第7 9 11列 状态200 源是b.cn
awk '$9 =="200" && $11 ~/^"http:\/\/[a-zA-Z0-9]*\.b\.cn/ {print $7,"\t",$9,"\t",$11}'

得到如下数据

200

2.再使用sed 对剩下的数据进行处理,只需要源的域名,以及访问目标的一级域名

sed 's/"//g' | sed 's/\(http:\/\/[a-zA-Z0-9]*\.b\.cn\)\/.*/\1/g'   #截取b.cn域名信息 sed 's/\(http:\/\/www\.test\.test\/[0-9a-zA-Z_]*\/\).*200/\1/g' #取www.test.test的第一级目录

3.通过awk 和 sed 之后,再去重 。去重需要先排序 再使用 uniq去重

sort -k2n | uniq

4.完整脚本

#!/bin/bashcd /home/loglog=`ls *.log`for i in $logdo          cat $i | awk '$9 =="200" && $11 ~/^"http:\/\/[a-zA-Z0-9]*\.b\.cn/ {print $7,"\t",$9,"\t",$11}' |  sed 's/"//g' | sed 's/\(http:\/\/[a-zA-Z0-9]*\.test\.test\)\/.*/\1/g'| sed 's/\(http:\/\/www\.test\.test\/[0-9a-zA-Z_]*\/\).*200/\1/g' >>test.logdonesleep 3cat test.log | sort -k2n | uniq >test1.log

转载于:https://blog.51cto.com/bshark/2162227

你可能感兴趣的文章
Inherits、CodeFile、CodeBehind的区别
查看>>
用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中
查看>>
802.3标准
查看>>
java爬虫笔记
查看>>
JSP导入EXCEL样式
查看>>
2.Hadoop集群安装进阶
查看>>
java研发工作组环境架设
查看>>
代码片收集
查看>>
网站备案与备案注销
查看>>
书单丨打开投资理财之路,从这25本书开始
查看>>
Less 创建css3动画@keyframes函数
查看>>
.NET Framework 4 与 .NET Framework 4 Client Profile的区别与联系
查看>>
Que pensez-vous de air jordan pas cher
查看>>
SQL Server 2008创建定期自动备份任务(转)
查看>>
SimpleDateFormat
查看>>
epoll_wait会被系统中断唤醒
查看>>
Java设计模式-代理模式
查看>>
Android--sharepreference总结
查看>>
在博客园已经一年多时间了,今天开通博客了!
查看>>
给定矩阵行数和矩阵列数,顺时针打印矩阵(从0开始)
查看>>