基本正則表達式:
grep:Globel serach REgular expression and print out the line
作用:文本搜索工具,根據用戶指定的“模式(過濾條件)”對目標文本逐行進行匹配檢查,打印匹配到的行
模式:由正則表達式的元字符及文本字符所編寫出的過濾條件
grep選項:
-l:lgnorecase,忽略字符的大小寫;
-o:僅顯示匹配到的字符串本身;
-v: –invert-match:顯示不能被模式匹配到額行;
-E:支持使用擴展的正則表達式元字符;
-q:–quit,–slient:靜默,不輸出任何信息
-A#:after:匹配本行及后#行
-B#:before:匹配本行和前#行
-C#:context,本行和前后各#行
基本正則表達式元字符:
字符匹配:
.:匹配任意單個字符 grep "r..t" /etc/passwd
[]:匹配指定范圍內的任意單個字符
[^]:匹配指定范圍外的任意單個字符
[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
匹配次數:用在要指定其出現的次數的字符的后面,用于限制其前面的字符出現的次數
*:匹配其前面的字符人一次;0,1,多次;
如: grep "x*y"
abxy
aby
xxxxxy
yab
.*:匹配任意長度的任意字符
\?:匹配其前面的字符0次或1次;即前面的字符是可有可無的;
\+:匹配其前面的字符1次或多次;即前面的字符要出現至少1次;
\{m\}:匹配前面的字符m次
\{m,n\}:匹配其前面的字符至少m次,至多n次;
\{0,n\}:至多n次
\{m,\}:至少m次
位置錨定:
^:行首錨定,用于模式的最左側
$:行尾錨定;用于模式的最右側
^PATTERN$:用于PATTERN來匹配整行
^$:空白行;
^[[:space:]]*$:空行或包含空白字符的行;
單詞:非特殊字符組成的連續字符串(字符串)都稱為單詞;
\<或\b:詞首錨定,用于單詞模式的左側
分組及引用:
\(\):將一個或多個字符捆綁在一起,當做一個整體進行處理;
\(xy\)ab:將xy當做一個整體進行匹配
Note:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄在內部的變量中
如:
\1 :模式從左側起,第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符
\2:模式從左側起,第二個左括號以及與之匹配的右括號之間的模式所匹配到的字符
\3:
相當于:(a+b-c)*d)
如:lovers.txt
he loves hist lover
he likes his lover
she liker her liker
she loves her liker
~]#grep "\(l..e).*\1" lovers.txt
后向引用:引用前面的分組括號中的模式所匹配到的字符:
擴展正則表達式:
egrep:
支持擴展的正則表達式實現類似于grep文本過濾功能;grep -E
egrep [options] patern [file..]
選項:
-i,-o,-q,-A,-B,-C
-G:支持基本正則表達式
擴展正則表達式的元字符:
字符匹配:
.:任意單個字符
[]:指定范圍內的任意單個字符
[^]:指定范圍外的任意單個字符
次數匹配:
*:任意次,0,1或多次;
?:0次或1次,其前的字符是可有可無的;
+:其前字符至少1次
{m}:其前的字符m次
{m.n}:至少m次,至多n次;
{0,n}
{m,}
位置錨定:
^:行首錨定;
$:行尾錨定;
\<,\b:詞尾錨定;
>\,\b:詞尾錨定
分組及引用:
():分組;括號內的模式匹配的字符會被記錄于正則表達式引擎的內部變量中
后向引用:\1,\2,…
或
a|b:a或者b
C|cat:C或cat
(c|C)at:cat或Cat
原創文章,作者:因為有你,如若轉載,請注明出處:http://www.www58058.com/31525