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
你们能够本身手动测试。