Linux管线命令egrep还有延伸正则表达式?

承接上一节

本节主要介绍grep下延伸正则表达式

延伸正则表达式

一般使用者只需要了解基础的正则表达式就够用了,但是呢,某些时候想要简化指令或者那啥(zhuang bi)的话了解延伸正则表达式也是挺好的,延伸表达式适用范围更加广泛.废话少说,举例子才是王道.

模板练习文件还是上一节的express.txt

Linux管线命令egrep还有延伸正则表达式?

express.txt模板练习文件

示例一:如果我们要去除空白行和行首是#的行列,按照上一节的做法是:

grep -v '^$' express.txt | grep -v '^#'

其实使用延伸表达式可以更简介

egrep -v '^$|^#' express.txt

Linux管线命令egrep还有延伸正则表达式?

grep -v '^$' express.txt | grep -v '^#'

延伸表达式可以通过群组功能"|"来进行一次查询,"|"就是or的意思,这样看来是不是延伸表达式简洁性更强呢,需要注意的是,grep默认仅支持基础正则表达式,egrep支持延伸正则表达式,这一点很多人容易混淆,其实egrep就是grep -E,因为直接去分指令比较好记忆,所以才区分grep,egrep.

通过上联的例子我们可以看到,所谓延伸正则表达式就是多了几个特殊符号而已.

+ 意义:重复“一个或一个以上”的前一个 RE 字符 范例:搜寻 (god) (good) (goood)... 等等的字串。 那个 o+ 代表“一个以上的 o ”

? 意义:“零个或一个”的前一个 RE 字符 范例:搜寻 (gd) (god) 这两个字串。 那个 o? 代表“空的或 1 个 o ”

| 意义:用或( or )的方式找出数个字串 范例:搜寻 gd 或 good 这两个字串,注意,是“或”!

()意义:找出“群组”字串 范例:搜寻 (glad) 或 (good) 这两个字串,因为 g 与 d 是重复的,所以, 我就可以将 la 与 oo 列于 ( ) 当中,并以 | 来分隔开来,就可以啦! > egrep -n 'g(la|oo)d' express.txt

()+意义:多个重复群组的判别 范例:将“AqwerqwerqwerC”用 echo 叫出,然后再使用如下的方法搜寻一下! > echo 'AqwerqwerqwerC' | egrep 'A(qwer)+C' 意思是说,我要找开头是 A 结尾是 C ,中间有一个以上的 "qwer" 字串的意思


分享到:


相關文章: