Linux正则表达式-选择性操作与分组操作


选择性操作
竖线(|)字符是元字符扩展集的一部分,用于指定正则表达式的联合。如果某行匹配其中的一个正则表达式,那么它就匹配该模式。例如,正则表达式:UNIX|LINUX
将匹配包含字符串"UNIX" 或字符串"LINUX" 的行。可以指定更多的选择,例如:
UNIX|LINUX|NETBSD

使用egrep时,打印匹配这3种模式中任意一种的行。
在sed中,没有联合元字符,可以分别指定每种模式。在下面内容中,我们将考虑分组的操作,我们将看到关于这个元字符的其他示列。


分组操作
圆括号()用于对正则表达式进行分组并设置优先级。它们是元字符扩展集的一部分。假设在文本文件中公司的名称为"BigOne" 或"BigOne Computer" ,使用表达式:
BigOne(Computer)?

将匹配字符串"BigOne" 本身或后面跟有一个字符串" Computer" 的形式。同样,有些术语有时会用全拼,有时会用缩写、则可以使用:
$ egrep "Lab(oratorie)?s" mail.list
Bell Laboratories, Lucent Technologies
Bell Labs
可以使用竖线和圆括号来对选择性操作进行分组。在下面的示列中,我们使用它来指定与单词"company" 的单数或复数匹配。

compan(y|ies)
要注意,在大多数sed和grep的版本中不能对加圆括号的一组字符应用数量词,但是在egrep和awk 的所有版本中都是可以的。

相关内容