一個正規表達式是由普通字元和特殊字元組成的文字模式,将某個字元模式與所搜尋的字元串進行比對。簡單的說,就是用來搜尋比對的一個很好的工具。
正規表達式分為:基本正規表達式和擴充正規表達式兩類
基本正規表達式的元字元如下:
. :比對任意單個字元
*:比對前一個字元的任意次
.*:任意長度的任意字元
[]:指定範圍内的任意單個字元
a\{m,n\}:a這個字元至少出現m次,最多出現n次
a\{m,\}:a這個字元至少出現m次,
a\{0,n\}:a這個字元最多出現n次
?:比對前一個字元出現0次或1其次
錨定符:
^:錨定行首
$:錨定行尾
^$:錨定空白行
\<:錨定詞首
\>:錨定詞尾
引用:
\(\)
接下來給每個元字元配備一個例子
“.”

上圖“ . ” 比對任意單個字元,root,r/ft中的o、/、f,都屬于任意單個字元
“*”
上圖星号“*”比對b任意次,也可以是0次,如圖中的ac
“.*”
上圖是以r開頭t結尾,中間是任意字元
第一行開頭就是root,已經比對完了,但是最後又以t結尾,這個稱為貪婪模式,盡量比對到最長
上圖表示以r開頭以t結尾中間為任意小寫字母
\{m,n\}
表示圖上b至少顯示1次,最多顯示兩次的行
\{m,\}
上圖表示以r開頭t結尾,中間的小寫字母至少出現兩次的行
\{0,n\}
表示b至少出現0次,最後出現2次的行
grep的選項
-v: 對結果去反
例:
這個是空白至少出現1次的,圖中紅色标記都是空白
反之 -v :grep -v "[[:space:]]\{1,\}" /etc/passwd
^:
上圖中顯示以root開頭的行
$:
顯示以n結尾的行
^$:
顯示空白行
\<:
顯示以r開頭的單詞
\>:
顯示以r結尾的單詞
\(\):
上圖a為檔案 1用來比對括号裡的l..e
表示以l..e開頭後面跟任意字元任意次,并且以r結尾的行
擴充正規表達式元字元:
( )
{}
+: 次數比對,比對其前的字元至少1次;
|:或者
注:使用擴充正規表達式格式必須為grep -E 或者egrep
( ):
和正規表達式中的\(\)效果一樣
{}:
和\{m,\}效果一樣
+:
比對b至少出現一次
|:
顯示以d或D開頭的dog
END