日志分析中的 awk、sort、uniq 和 grep 应用

awk简介

  awk是一种强大的文本处理工具,其功能与sed和grep相似,但更加灵活。它使用类似C语言的语法,并且适用于处理结构化文本数据,如表格数据。awk是一种模式扫描和处理语言,可以轻松提取、操作和格式化文本数据,特别是适用于处理日志文件中的结构化信息。

sort简介

  sort用于对文本数据进行排序。它可以对文件内容进行排序,也可以从标准输入中读取数据并对其排序,然后将结果输出到标准输出或指定的文件中。

uniq简介

  uniq命令用于删除文件中的重复行,经常与sort命令一起使用,因为uniq要求重复的行一定相邻。所以在使用uniq命令之前,请使用sort命令使所有重复行相邻。

grep简介

  grep是一个强大的文本搜索工具,它的主要功能是进行字符串数据的比较,并将符合条件的行打印出来。grep在数据中查找一个字符串的时候,是以整行为单位进行筛选的。

日志分析中的应用

1、查找请求次数最多的IP前十

awk '{print $9}' log.txt |sort |uniq -c |sort -rn |head

#打印文件的IP字段,排序、去重、倒序、列出前十行
sort 对输入进行排序。 默认情况下,它会按照字典顺序对文本进行排序
sort -r 倒序,用于反向排序
	 -n 按照数字排序

uniq 用于从已排序的文本中删除重复的行
	 -c 用于计数每个行重复出现的次数
	 
head 用于从排序的结果中选取头部行,默认为10


2、查找访问成功状态码为200的IP

awk '$17=="200"{print $9}' log.txt |sort |uniq -c |sort -rn 


3、查找访问成功状态码为200的总次数

awk '$17==200' log.txt |wc -l

wc -l 用于统计文件中的行数


4、查找攻击类型为WEBSHELL的IP

awk '$7=="WEBSHELL"{print $9}' log.txt |sort |uniq -c |sort -rn


5、查找某个IP访问过的URL

grep 'xxx.xx.xx.xx' log.txt | awk '{print $13}' |sort |uniq -c |sort -rn


6、提取文件中所有出现过的URL

cat log.txt |grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" |sort |uniq -c |sort -rn

-E 使用扩展正则表达式(Extended Regular Expression)进行匹配
-o 仅输出匹配到的文本,而不是整行


7、查找某一IP有关的所有URL

awk '$9=="xxx.xx.xx.xx"' log.txt |grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" |sort |uniq -c |sort -rn


8、查找访问过某个URL的IP

grep "/etc/shells" log.txt |awk '{print $9,$13}'


posted @ 2024-02-20 17:46  BMCel  阅读(162)  评论(0编辑  收藏  举报