grep -E 表示支持擴展的正則表達式正則表達式
grep -E = egrep測試
擴展模式下的字符匹配與基本正則表達式的字符匹配相同,如:spa
. 表示任意單個字符orm
[] 表示範圍內人任意單個字符,如[0-9],表示任意單個數字blog
[^] 表示範圍外的任意單個字符,如[^0-9],表示出數字外的任意單個字符ip
上述字符匹配中,基本正則表達式與擴張表達式徹底相同,但次數匹配就有些不同了。ci
* 匹配前面字符任意次,與基本正則表達式意義相同it
? 匹配其前字符0次或1次,其前面不須要 \ 轉義io
+ 匹配其前字符至少一次,等於基本正則表達式的 \{1, \} ?+ = *cli
{m,n} 匹配其前字符至少m次,最多n次,等於基本正則表達式的\{m,n\}
與基本正則表達式徹底意義,請參考上一篇。
基本正則表達式中支持分組,而在擴展正則表達式中,分組的功能更增強大,也能夠說纔是真正的分組,用法以下:
():分組,後面可使用\1 \2 \3...引用前面的分組
除了方便後面引用外,分組還很是方便的可使用上述次數匹配方法進行匹配具備相同條件的數據。
如:grep '^(int).*\1' *.txt 搜索文件*.txt中以int開頭,然後面還存在int的行
因此,要加上grep -E參數
如:grep '^(barlow).*\1' /etc/passwd 搜索/etc/passwd中以barlow開頭,然後面還存在barlow的行
| 表示或,如 : a|b 表示匹配a或者b
E|times 匹配E或times,即 | 匹配的是其整個左邊或者右邊
一樣效果:
$egrep '(T|t)imes' *txt
你們能夠本身手動測試。