grep:Global REgular expression and Print out the line.
作用:文本搜索工具,根據用戶指定的“模式“對目標文本逐行進行匹配檢查,打印匹配到的行;
模式:由正則表達式字符及文本字符所編寫的過濾條件;
REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示字符字面意義,而表示控制或通配的功能;
分兩類:
基本正則表達式:BRE (grep)
擴展正則表達式:ERE (egrep)
快速正則表達式: (fgerp)
正則表達式引擎
用法:
grep [OPTIONS] PATTERN [FILE...]
[root@i-wx7sdofs ~]# grep root /etc/passwd
[root@i-wx7sdofs ~]# grep -v root /etc/passwd
[root@i-wx7sdofs ~]# grep -A 2 root /etc/passwd
[root@i-wx7sdofs ~]# grep -B 2 root /etc/passwd
選項:
--color=auto: 對匹配到的文本着色顯示;
-v:顯示不能夠被pattern 匹配到的行;
-E:egrep 使用擴展的正則表達式
-F:fgerp
-i:忽略匹配大小寫;
-o:僅顯示匹配到的字符串本身;
-q:靜默模式,不輸出任何信息;
-A #:顯示匹配到的行及行後的N行。(after,後#行);
-B #:before,前#行 ;
-C #: context,前後各#行 ;
基本正則表達式元字符;
字符匹配:
. : 匹配任意單個字符
[]: 匹配指定範圍內的任意單個字符
[^]: 匹配指定範圍外的任意單個字符
[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punxt:]、[:space:] 指定範圍內的字符
匹配次數:用在要指定次數的字符後面,用於指定前面的字符要出現的次數;
* :匹配前面的字符任意次;
例如:grep "x*y"
.* :任意長度的任意字符;
\? :匹配前面的字符0次或1次,即前面的可有可無;
\+ :匹配其前面字符至少1次;
\{m\} :匹配前面的字符m次;
\{m,n\}:匹配前面的字符至少m,至多n次;
\{0,n\}:匹配前面的字符至多n次;
\{m,\}:匹配前面的字符至少m次;
位置錨定:
^ :行首錨定,用於模式的最左側 ^root;
$ :行尾錨定,用於模式的最右側;
^PATTERN$ :用於模式匹配整行;
^$ : 空行;
^[[:space:]]*$ :空行;
\< 或 \b:詞首錨定,用戶單詞模式的左側;
\> 或 \b:詞尾錨定,用戶單詞模式的右側;
\<PATTERN\> : 匹配整個單詞,用戶單詞左右兩側;
分組:
\(\):將1個或多個字符捆綁在一起,當做一個整體進行處理;
例如匹配 \(xy\)*ab
Note:分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,這些變量的命名方式爲:\1,\2,\3,....
\1: 從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
\(ab\+\(xy\)*\):
\1: ab\+\(xy\)*
\2: xy
後向引用:引用前面的分組括號中的模式所匹配字符,(而非模式本身)
egrep = grep -E
擴展正則表達式的元字符:
字符匹配:
. :
[]:
[^]:
次數匹配:
* :
? :0或1次;
+ :1次或多次;
{m} : 匹配M次;
{m,n} :至少m,至多n次;
錨定:
^:
$:
\<,\b:
\>,\b:
分組:
()
後向引用: \1,\2, ...
或者:
a|b
C|cat: C或cat