linux grep与正则表达式使用介绍

2020-03-08 08:02:10王振洲

grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。
grep egrep fgrep(不支持正则表达式)
grep需要标准输入 因此常常位于管道右侧

命令参数:

--color=auto: 对匹配到的文本着色显示
-v: 显示不被pattern匹配到的行
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
grep –e ‘cat ' -e ‘dog' file
-w:匹配整个单词 数字加字母下划线全都算单词的一部分,其他的都是单词的分隔符
-E:相当于egrep
-F:相当于fgrep,不支持正则表达式
-f: 跟一个文件(写有不同字符)进行内容检索是逻辑or关系

练习题:

1、显示三个用户root、centos、arch的UID和默认shell (用户需要自己创建)

grep与正则表达式

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一 个小括号的行

grep与正则表达式

3、使用egrep取出/etc/rc.d/init.d/functions中其基名

grep与正则表达式

4、使用egrep取出上面路径的目录名

grep与正则表达式

5、统计last命令中以root登录的每个主机IP地址登录次数

grep与正则表达式

6、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

0-9: [0-9]
10-99: [1-9][0-9]
100-199: 1[0-9][0-9]
200-249: 2[0-5][0-9]
250-255: 25[0-5]

7、显示ifconfig命令结果中所有IPv4地址

grep与正则表达式

8、将此字符串:welcome to centos linux 中的每个字符排序,重复 次数多的排到前面

grep与正则表达式

正则表达式:

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符) 不表示字符字面意义,而表示控制或通配的功能
程序支持:grep,sed,awk,vim, less,nginx,varnish等
分两类:
基本正则表达式:BRE
扩展正则表达式:ERE
grep -E, egrep
正则表达式引擎: