cat⽇志搜索_linux使⽤grep条件搜索⼤⽂件的⾏数等操作⼀、前⾔
最近需要查询⼤⽇志⽂件的时候,每次打开vim,cat之类的都会卡死,但是需要查看符合条件的共有多少⾏数据,这可愁死我了,下⾯列出⼀些常⽤的匹配查询命令。
⼆、常⽤的搜索命令
1、grep搜索
grep 参数⽂件名 | head    //从头查
grep 参数⽂件名 | wc- l    //查看符合条件的有多少⾏
cat ⽂件名 |grep 参数$ //输出以该参数结尾的⾏内容
2、实例
(1)根据具体的参数来搜索⾏数
cat /data/weblogs/xxx.access.log  |grep "GET /pixel.jpg?"|wc -l
4102386
(2)部分正则查询
cat /data/weblogs/em.evony.access.log |grep "25/Nov/2019:15:[00-59]" |wc -l
120
查询25/Nov/2019:15时的所有数据,那么15时后⾯的分钟数就是00-59
(3)多个条件之间可以使⽤管道连接,查询同时符合两个条件的⾏数
cat /data/weblogs/xxx.log |grep "25/Nov/2019:15:[00-59]" |grep "GET /pixel.jpg?"|wc -l
120
查询符合条件1或者符合条件2 的⾏数
cat /data/weblogs/xxx.log |grep -E "25/Nov/2019:15:[00-59] |GET /pixel.jpg?"|wc -l
4098135
简写: grep -E "exp1|exp2|exp3" | wc -l
参考:blog.csdn/lijing742180/article/details/84959963
3、grep是模糊查询
在使⽤grep搜索端⼝号的时候,查出来的结果不尽⼈意,什么⽜⿁蛇神都查出来了,例⼦如下:
netstat -anp |grep -i '80'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
grep命令查看进程
tcp        0      0 127.0.0.1:80                0.0.0.0:*                  LISTEN      -
tcp        0      0 10.17.2.50:80              0.0.0.0:*                  LISTEN      -
tcp        0      0 216.66.17.189:80            0.0.0.0:*                  LISTEN      -
tcp        0      0 10.17.2.50:10050            10.17.13.2:33801            TIME_WAIT  -
推荐个更好⽤的,具体查询80端⼝的使⽤情况,使⽤命令:
netstat -apn | awk '{split($4,arr,":"); if(arr[2] == "80") print $0}'
⼀步到位,查出来的都是80端⼝的进程,⼗分好⽤。
三、搜索⽂件中的ip地址
1、匹配ip
grep -Eo '([^0-9]|b)((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]).){3}(1[0-9][0-9]|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])([^0-9]|b)' xxx.log | sed -nr 's/([^0-9]|b)((
31116275
2、查询每个ip出现的次数
grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9
2 99.203.87.103
2 99.203.87.142
4 99.203.87.145
8 99.203.87.153
前⾯是出现次数,后⾯是ip
3、更精准的匹配ip
grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9 32929372
4、模糊匹配ip
grep -E -o "([0-9]{1,3}[.]){3}[0-9]{1,3}" xxx.log|wc -l
32930309
5、多个条件查询ip,先根据限定条件获取指定的⾏数,然后再搜索ip的个数
cat xxx.log |grep "25/Nov/2019:15:[00-59]" |grep "GET /pixel.jpg?"|grep -E -o "([0-9]{1,3}[.]){3}[0-9]{1,3}"|wc -l
1110
感觉这些查ip的⽅法都差不错,因为⽇志⽂件⼀直在增⼤,所以查出来的结果也不⼀样,查的速度也⽐较慢,可能是⽂件太⼤了,在此记录⼀下,总有⽤得着的时候。
以上内容希望帮助到⼤家,更多PHP⼤⼚PDF⾯试⽂档,PHP进阶架构视频资料,PHP精彩好⽂可以关注:PHP开源社
区,或者访问:
精华PHP技术⽂章整理合集——PHP框架篇
精华PHP技术⽂合集——微服务架构篇
精华PHP技术⽂合集——分布式架构篇
精华PHP技术⽂合集——⾼并发场景篇
精华PHP技术⽂章整理合集——数据库篇
⽂来源:blog.csdn/LJFPHP/article/details/103378223

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。