1.查找ip出现的次数
注:此方法可以查很多有固定格式的文本内容的变量部分。
比如日志文件如下
2023-06-12_14:01:15.291 [http-nio-8203-exec-74] INFO access-logger - {"appId":"a-a-a","domain":"a.a.cn","env":"test","expend":11,"fip":"11.0.123.2","url":"/test/login"}
2023-06-12_14:01:15.292 [http-nio-8203-exec-74] INFO access-logger - {"appId":"a-a-a","domain":"a.a.cn","env":"test","expend":11,"fip":"11.0.123.3","url":"/test/login"}
2023-06-12_14:01:15.293 [http-nio-8203-exec-74] INFO access-logger - {"appId":"a-a-a","domain":"a.a.cn","env":"test","expend":11,"fip":"11.0.123.2","url":"/test/login"}
使用命令
cat 2023061214.log |grep -o '"fip":[^,]*'|awk -F '"' '{print $4}' |sort|uniq -c |sort -r |head -n 5
结果
2 11.0.123.2
1 11.0.123.3
命令讲解
这个命令是用来从一个日志文件中提取出出现频率最高的前5个 "fip" 字段的值。
具体地,它的执行步骤如下:
cat 2023061214.log:将文件 "2023061214.log" 的内容输出到标准输出。grep -o '"fip":[^,]*':在输出中查找所有形如 "fip":"xxx" 的字符串,并将其输出到标准输出。awk -F '"' '{print $4}':使用双引号作为分隔符,将输出中的每一行分成多个字段,并输出第四个字段,即 "fip" 字段的值。sort:对输出进行排序。uniq -c:统计相同的行数,并输出每个行和它出现的次数。sort -r:按照出现次数从高到低排序。head -n 5:输出前五行。
综合起来,这个命令的作用是从日志文件中提取出所有的 "fip" 字段的值,并按照出现频率从高到低排序,最后输出前五个出现频率最高的值。
这个命令可以举一反三,搜索类似结构的数据
2.查看某个目录的文件大小
du -sh ./log/