正則表達式grep和擴展正則表達式egrep

 基本正則表達式grep的用法git

grep [options] PATTERN [FILE...] 
就是咱們只要指定選項、指定模式、指定文件便可
如:grep 'root' /etc/passwd  顯示結果以下
下面是grep所支持的經常使用選項
-i:忽略大小寫
--color:給符合條件的加上顏色
-v:顯示沒有被模式匹配的行
-o:只顯示被模式匹配的字符串
-E:使用擴展正則表達式
-A+#:顯示其匹配的行和匹配行的後#行 
-B+#:顯示匹配的行和匹配行的前#行
-C+#:顯示匹配的行和匹配行的先後各#行
正則表達式的元字符
.:匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符
如:grep [^0-9] etc/passwd 意思就是除了0到9這些數字不被匹配,其餘的都是匹配對象
字符集合:
[:digit:]: 數字                 [:lower:]:小寫字母
[:upper:]: 大寫字母            [:punct:]:標點符號  
[:space:]:空白字符            [:alpha:]: 大小寫字母
[:alnum:]數字和大小寫字母
匹配次數:
首先咱們建個文檔test.txt 裏面的內容爲(a,b,ab,aab,acb,adb,amnb)
*:匹配其前面的字符任意次
如:grep 'a*b' test.txt  則被匹配的是 (b,ab,aab) 
.*:任意長度的任意字符
如:grep 'a.*b' test.txt  則被匹配的是(ab,aab,acb,adb,amnb)
\?:匹配其前面的的字符1次或0次
如:grep 'a\?b' test.txt  則被匹配的是(b,ab)
\{m,n\}:匹配其前面的字符至少m次,至多n次
如:grep 'a\{1,2\}b' test.txt 則被匹配的是(ab,aab)
位置錨定:
^:錨定行首,此字符後面的任意內容必須出如今行首
如:grep '^root' etc/passwd 意思就是:只要是root開頭的行就是所匹配的行
$:錨定行尾,此字符前面的任意內容必須出如今行尾
如:grep 'bash$' etc/passwd 意思就是:只要是bash結尾的行就是所匹配的行
^$:空白行  grep '^$' /etc/inittab  /etc/inittab中的空白行就會被匹配
\<或\b:錨定詞首,其後面的任意字符必須做爲單詞首部出現
\>或\b:錨定詞尾,其前面的任意字符必須做爲單詞的尾部出現
書寫格式:grep "\<root" /etc/passwd
          grep "root\>" /etc/passwd
 分組:
\(\)
如:ab* 其意思是a後面的b能夠出現0次1次或任意次
   如分組\(ab\)* 則表示ab爲一個總體能夠出現0次1次或任意次
後向引用
\1:引用第一個左括號以及與之對應的右括號所包括的全部內容
建個文檔test.txt 內容爲(He love his lover.
                       She like her liker.
                        He like his lover.)
命令及命令結果如圖所示:
 \2:引用第二個左括號以及與之對應的右括號所包括的全部內容
擴展正則表達式(egrep)
egrep = grep  -E 
字符匹配:
.: 匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符
次數匹配:
*:匹配其前面的字符任意次
?:匹配其前面的的字符1次或0次
+:匹配其前面的字符至少1次
{m,n}:不須要反斜槓(\)
位置錨定:
^:錨定行首,此字符後面的任意內容必須出如今行首
$:錨定行尾,此字符前面的任意內容必須出如今行尾
\<:錨定詞首,其後面的任意字符必須做爲單詞首部出現
\>:錨定詞尾,其前面的任意字符必須做爲單詞的尾部出現
分組:
():分組 
\1, \2, \3, ...
或者
|: or
如:egrep 'C|cat' /test.txt  其意思是說在test.txt中查找C或cat
相關文章
相關標籤/搜索