前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux三剑客之grep简介

Linux三剑客之grep简介

作者头像
AsiaYe
发布2019-11-06 17:14:06
6280
发布2019-11-06 17:14:06
举报
文章被收录于专栏:DBA随笔

Linux三剑客之grep简介

grep,sed和awk被称之为linux三剑客,后面两个在文章中都写过一些,今天先简单写写grep这个命令。

grep是一个强大的文本过滤命令,它可以将符合规范的一些文本过滤出来,经常备用在文本处理的场景。

下面我们简单说说grep这个命令的一些常用参数和用法:

1、没有参数

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh
abcdefg   
abcd      
aaaaaaa   
ddddddd   
[root dba_mysql]# cat yeyz.sh|grep abcd
abcdefg   
abcd      

没有参数的时候,grep命令将yeyz.sh中包含abcd的行给过滤出来。

2.-A参数(after)和-B参数(before)和-C参数(content)

这三个参数可以打印出来符合规范的行前后的若干行,使用方法如下:

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh
abcdefg   
abcd      
aaaaaaa   
ddddddd   
[root dba_mysql]# cat yeyz.sh|grep abcd
abcdefg   
abcd      
包含abcd的行后面一行
[root dba_mysql]# cat yeyz.sh|grep -A1 abcd
abcdefg   
abcd      
aaaaaaa   
包含abcd的行后面两行
[root dba_mysql]# cat yeyz.sh|grep -A2 abcd
abcdefg   
abcd      
aaaaaaa   
ddddddd   
包含aaa的行前面一行
[root dba_mysql]# cat yeyz.sh|grep -B1 aaa 
abcd      
aaaaaaa   
包含aaa的行前面两行
[root dba_mysql]# cat yeyz.sh|grep -B2 aaa
abcdefg   
abcd      
aaaaaaa   
代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh
abcdefg   
abcd      
aaaaaaa   
ddddddd   
[root dba_mysql]# cat yeyz.sh|grep -C1 aaa
abcd      
aaaaaaa   
ddddddd   

可以看到-A参数负责打印后面若干行,-B参数负责前面,-C参数负责前后都打印。

3.-c参数 (count)

计算符合规则的行数,本例中是包含abcd的行的行数

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh
abcdefg   
abcd      
aaaaaaa   
ddddddd   
[root dba_mysql]# cat yeyz.sh|grep -c abcd 

4.-h和-H参数

控制是否显示文件名称,如下:

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh
abcdefg   
abcd      
aaaaaaa   
ddddddd   
[root dba_mysql]# grep -H  aaa yeyz.sh   
yeyz.sh:aaaaaaa   
[root dba_mysql]# grep -h  aaa yeyz.sh 
aaaaaaa   

5.-i参数

控制是否忽略大小写,如下所示:

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh 
abcdefg   
abcd      
AbC       
aaaaaaa   
ddddddd   
大小写不敏感
[root dba_mysql]# cat yeyz.sh | grep -i 'abc'
abcdefg   
abcd      
AbC       
大小写敏感
[root dba_mysql]# cat yeyz.sh | grep  'abc'  
abcdefg   
abcd      

6.-n参数

控制是否显示行号,操作如下:

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh 
abcdefg   
abcd      
AbC       
aaaaaaa   
ddddddd   

是否显示行号
[root dba_mysql]# cat yeyz.sh | grep -n 'AbC'
:AbC       
[root dba_mysql]# cat yeyz.sh | grep  'AbC'  
AbC       

7.-v参数

反向匹配不包含的列,操作如下:

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh 
abcdefg   
abcd      
AbC       
aaaaaaa   
ddddddd   

反向匹配,不包含AbC的列
[root dba_mysql]# cat yeyz.sh | grep -v 'AbC'
abcdefg   
abcd      
aaaaaaa   
ddddddd   

8.-x参数

只匹配完全相同的行,注意,空格不一致都不行!

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh 
abcdefg   
abcd      
AbC       
aaaaaaa   
ddddddd   

只匹配完全相同的列
[root dba_mysql]# cat yeyz.sh | grep -x 'AbC'
[root dba_mysql]# cat yeyz.sh | grep -x 'AbC 678'
[root dba_mysql]# cat yeyz.sh | grep -x 'AbC   678'
[root dba_mysql]# cat yeyz.sh | grep -x 'AbC       678'
AbC       

9.-o参数和-w参数

-o参数只显示我们想要的那一部分,-w参数只显示完全匹配我们过滤条件的部分。

代码语言:javascript
复制
[root dba_mysql]# cat yeyz.sh 
abcdefg   
abcd      
AbC       
aaaaaaa   
ddddddd   

-o参数只显示匹配的值
[root@tk-dba-mysql-stat-10-104 dba_mysql]# cat yeyz.sh | grep -o 'abcd'         
abcd
abcd
-w参数只显示完全匹配过滤条件的行,虽然第一行中包含abcd,但是后面还有efg,所以没有出现在结果集里面
[root@tk-dba-mysql-stat-10-104 dba_mysql]# cat yeyz.sh | grep -w 'abcd'
abcd      

总结:

grep命令的用途不仅仅是这些参数之间的变化,该命令搭配正则表达式可以实现很多"神奇的"功能,后续我们会持续更新。敬请期待。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档