Linux—shell正则表达式—egrep
一.扩展正则表达式
通常情况下会使用基础正则表达式就已经足够了,但有时为了简化整个指令,需要使用范围更广的扩展正则表达式。例如,使用基础正则表达式查询除文件中空白行与行首为“#” 之外的行(通常用于查看生效的配置文件),执行“grep –v‘^KaTeX parse error: Expected group after '^' at position 22: …txt | grep –v ‘^̲#’”即可实现。这里需要使用管…|^#’test.txt”,其中,单引号内的管道符号表示或者(or)。
此外,grep 命令仅支持基础正则表达式,如果使用扩展正则表达式,需要使用 egrep 或 awk 命令。awk 命令在后面的小节进行讲解,这里我们直接使用 egrep 命令。egrep 命令与 grep 命令的用法基本相似。egrep 命令是一个搜索文件获得模式,使用该命令可以搜索文件中的任意字符串和符号,也可以搜索一个或多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字或一个句子。
二.常见元字符
1. +,重复零个或者多个的前一个字符
[root@localhost ~]# egrep -n 'wo+d' abc.txt
11:wood
12:wod
13:woood
14:wooood
15:woooood
2. ?,查询是否存在有前一个字符
[root@localhost ~]# egrep -n 'bes?t' abc.txt
17:best
18:bet
3.| ,使用或者(or)的方式找出多个字符
[root@localhost ~]# egrep -n 'of|if|on' abc.txt
19:often
20:ifconfig
21:ontime
4.(),查找“组”字符串
[root@localhost ~]# egrep -n 'be(s|a)t' abc.txt
17:best
22:beat
5.()+ ,辨别多个重复的组
[root@localhost ~]# egrep -n 'A(xyz)+C' abc.txt
23:AxyzC
24:AxyzxyzC