延伸正规表示法

来源:互联网 发布:免费打电话软件 编辑:程序博客网 时间:2024/05/01 17:53

一般读者只要了解基础型的正规表示法大概就已经相当足够了,不过,某些时刻为了要简化整个命令操作, 了解一下使用范围更广的延伸型正规表示法的表示式会更方便呢!

我们要去除空白行与行首为 # 的行列,使用的是

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

如果使用延伸型的正规表示法,我们可以简化为:

egrep -v '^$|^#'regular_express.txt【那个在单引号内的管线意义为『或 or』啦】

如果要使用延伸型正规表示法,你可以使用 grep -E , 不过更建议直接使用 egrep !直接区分命令比较好记忆!其实 egrep 与 grep -E是类似命令别名的关系啦!


RE 字符意义与范例+意义:重复『一个或一个以上』的前一个 RE 字符
范例:搜寻 (god) (good) (goood)... 等等的字串。 那个 o+ 代表『一个以上的 o 』
egrep -n 'go+d' regular_express.txt?意义:『零个或一个』的前一个 RE 字符
范例:搜寻 (gd) (god) 这两个字串。 那个 o? 代表『空的或 1 个 o』;有没有发现到,这两个案例( 'go+d' 与 'go?d')的结果集合 'go*d'相同?
egrep -n 'go?d' regular_express.txt|意义:用或( or )的方式找出数个字串
范例:搜寻 gd 或 good 这两个字串,注意,是『』! 
egrep -n 'gd|good' regular_express.txt
egrep -n 'gd|good|dog'regular_express.txt()意义:找出『群组』字串
范例:搜寻 (glad) 或 (good) 这两个字串,因为 g 与 d 是重复的
egrep -n 'g(la|oo)d' regular_express.txt()+意义:多个重复群组的判别
范例:将『AxyzxyzxyzxyzC』用 echo 叫出,然后再使用如下的方法搜寻一下! 
echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C'
以上这些就是延伸型的正规表示法的特殊字节。另外,要特别强调的是,那个 !在正规表示法当中并不是特殊字节, 所以,如果你想要查出来文件中含有 ! 与 >的字行时,可以这样:

[root@sor-sys zy]# grep -n '[!>]' regular_express.txt
2:goooooogle yes!
6:oh, my god!!!
8:Oh! The soup taste good.
12:The world <Happy> is the same with "glad".

常常看到有陷阱的题目写:『反向选择这样对否? '[!a-z]'?』

 呵呵!是错的呦~要 '[^a-z] 才是对的!