1. 程式人生 > >Linux正則表示式-選擇性操作與分組操作

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 的所有版本中都是可以的。

參考資料:http://www.linuxawk.com/communication/455.html