一、正则表达式

正则表达式模式:贪婪模式、非贪婪模式

正则表达式包括:基本正则表达式、扩展正则表达式


1、基本正则表达式

^锚定行首的内容,如:^pattern
$锚定行尾的内容,如:pattern$
^$空白行
.匹配任意单个字符
*匹配其左边字符任意次
.*匹配任意长度的任意字符
[ ]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
\?匹配其左边字符0次或1次
\{m,n\}匹配其左边字符至少m次,至多n次
\{m,\}匹配其左边字符至少m次
\{m\}匹配其左边字符精确m次
\<
锚定词首,如:\<pattern
\>锚定词尾,如:pattern\>
\<\>锚定单词(并非真正意义上的英文单词),\<pattern\>
\b

字符边界符,与\<、\>功能类似,如:\bpattern\b (锚定单词)

\(pattern\)分组,如:\(abc\).*\1 说明:此处1表达第1个分组


[:lower:]
小写字母
[:upper:]大字字母
[:digit:]数字
[:alpha:]字母
[:alnum:]字母和数字
[:space:]空格
[:punct:]标符号(字母、数字、控制、空白符以外的字母)


2、扩展正则表达式

+重复一个或一个以上的前一个字符
?零个或一个前一个字符
|或,多选一
()分组
()+重复一个或一个以上的前一个分组
{m,n}匹配其左边字符至少m次,至多n次
\<\>锚定单词


同时包括所有基本正则表达式,除\<、\>外,扩展正则表达式中不需要使用反斜线。


更多正则表达式使用可查看:man 7 regex

也可参考:http://www.cnblogs.com/lcf/articles/807523.html


二、grep 使用

grep 支持基本正则表达式

egrep 支持扩展正则表达式(相当于:grep -E)

fgrep 不支持模式匹配,但速度很快


命令:grep

作用:打印出与模式匹配的行

参数:

--color=auto

匹配到的信息使用颜色标记,auto选项可省略

修改默认配色方案(前景色后景色):export GREP_COLOR='01;36'

-v反射选取
-o只显示被模式匹配到的字符串
-i不区分字符大小写
-w匹配单词
-r递归查找
-A #显示所匹配到行,及其后面的#行
-B #显示所匹配到行,及其前面的#行
-C #显示所匹配到行,及其前后的#行
-E使用扩展正则表达式


三、举例:

匹配IP地址:

ifconfig |egrep --color "([1-9]|[1-9][0-9]|1[0-9]{1}|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9]{1}|2[0-4][0-9]|25[0-5])"


四、注意事项

1、grep (基本正则)使用中,指示符必须加反斜线\,而egrep (扩展正则)中却不能加反斜线\:

grep --color "\(error\)" *

egrep --color "(error)" *

egrep --color "\<(error)" * (\<、\>:单词锚定除外)