温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

linux中怎么利用grep条件搜索大文件

发布时间:2021-06-22 15:40:14 来源:亿速云 阅读:1262 作者:Leah 栏目:大数据

本篇文章为大家展示了linux中怎么利用grep条件搜索大文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

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.com.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
参考:https://blog.csdn.net/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.)
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)(([0-9]{1,3}\.){3}[0-9]{1,3})([^0-9]|\b)/\2/p'|wc -l

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]?)"  xxx.log |sort|uniq -c

      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]?)"  xxx.log|wc -l

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

上述内容就是linux中怎么利用grep条件搜索大文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI