正则表达式:由一堆元字符组成的,为了实现通配用的(简写re)
正则表达式分为,基本正则表达式,扩展表达式
基本正则表达式的部分元字符
举几个例子来说明,下面以/etc/passwd为例
1、^脱字符,行首定位符用来定位行首的
如查找/etc/passwd里面以root开头的行
grep '^root' /etc/passwd

2、$行尾定位符,与脱字符相反
如:查找/etc/passwd目录下以bash结尾的行
grep 'bash$' /etc/passwd

3、“.”匹配单个字符
如我想在/etc/passwd文件中查找以roo开头后面跟任意单个字符的的行
grep '^roo.' /etc/passwd

4、*匹配0个或者多个位于*前的字符
如在/etc/passwd目录下查找以roo开头后面跟或者不跟o的行
grep '^roo*' /etc/passwd

5.[]匹配一组字符中的一个或者任意一个
如在/etc/passwd中查找以r开头的行无论大小写
grep '^[Rr]' /etc/passwd

6.[x-y]匹配指定范围内的单个字符
如在/etc/passwd中查找以r-t开头的行
grep '^[r-t]' /etc/passwd

7.[^ ]匹配不在组中的字符
如查找不以a-r开头的行在
grep '^[^a-r]' /etc/passwd
前面的^是脱字符

8.\用来转译字符
如查找以root:开头的行
grep '^root\:' /etc/passwd

9.\<词首定位符,用来定义词首的
如查找包含roo开头的单词的行
grep '\<roo' /etc/passwd

10.\>词尾定位符,定义词尾
如查找以oot结尾的词所在的行
grep 'oot\>' /etc/passwd

11.\(..\)匹配稍后将要使用字符的标签
如查找roo后面跟任意字符,并且后面有个root的行
grep '\(roo\).*\1t' /etc/passwd
.*表示任意长度的任意字符

12.x\{m,n\}匹配x且最多出现n次最少出现m次
如查找o最多出现2次最少1次的行
grep 'o\{1,2\}' /etc/passwd

还有
x\{m,\}字符x最少出现m次
x\{m\}字符x精确出现m次等等不再举例

扩展的正则表达式与基本正则表达式相同功能的有
^ $ . * [] [^]
不同的有
1.+匹配一个或多个+前得字符
如查找r后面跟一个或任意个r的字符,此处用egrep
egrep 'r+' /etc/passwd

2.?匹配一个或零个前导字符
查找roo后面不跟或者跟1个o以及t的字符
egrep 'roo?t' /etc/passwd

3.a|b匹配a或者b
查找存在root或者以rpc的行
egrep 'root|rpc' /etc/passwd