一、正则表达式
正则表达式模式:贪婪模式、非贪婪模式
正则表达式包括:基本正则表达式、扩展正则表达式
1、基本正则表达式
^ | 锚定行首的内容,如:^pattern | @H_403_20@
$ | 锚定行尾的内容,如:pattern$ | @H_403_20@
^$ | 空白行 | @H_403_20@
. | 匹配任意单个字符 | @H_403_20@
* | 匹配其左边字符任意次 | @H_403_20@
.* | 匹配任意长度的任意字符 | @H_403_20@
[ ] | 匹配指定范围内的任意单个字符 | @H_403_20@
[^] | 匹配指定范围外的任意单个字符 | @H_403_20@
\? | 匹配其左边字符0次或1次 | @H_403_20@
\{m,n\} | 匹配其左边字符至少m次,至多n次 | @H_403_20@
\{m,\} | 匹配其左边字符至少m次 | @H_403_20@
\{m\} | 匹配其左边字符精确m次 | @H_403_20@
\< |
锚定词首,如:\<pattern | @H_403_20@
\> | 锚定词尾,如:pattern\> | @H_403_20@
\<\> | 锚定单词(并非真正意义上的英文单词),\<pattern\> | @H_403_20@
\b | 字符边界符,与\<、\>功能类似,如:\bpattern\b (锚定单词) |
@H_403_20@
\(pattern\) | 分组,如:\(abc\).*\1 说明:此处1表达第1个分组 | @H_403_20@
[:lower:] |
小写字母 | @H_403_20@
[:upper:] | 大字字母 | @H_403_20@
[:digit:] | 数字 | @H_403_20@
[:alpha:] | 字母 | @H_403_20@
[:alnum:] | 字母和数字 | @H_403_20@
[:space:] | 空格 | @H_403_20@
[:punct:] | 标符号(字母、数字、控制、空白符以外的字母) | @H_403_20@
2、扩展正则表达式
+ | 重复一个或一个以上的前一个字符 | @H_403_20@
? | 零个或一个前一个字符 |
@H_403_20@
| | 或,多选一 |
@H_403_20@
() | 分组 |
@H_403_20@
()+ | 重复一个或一个以上的前一个分组 | @H_403_20@
{m,n} | 匹配其左边字符至少m次,至多n次 | @H_403_20@
\<\> | 锚定单词 | @H_403_20@
同时包括所有基本正则表达式,除\<、\>外,扩展正则表达式中不需要使用反斜线。
更多正则表达式使用可查看: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' |
@H_403_20@
-v | 反射选取 | @H_403_20@
-o | 只显示被模式匹配到的字符串 | @H_403_20@
-i | 不区分字符大小写 | @H_403_20@
-w | 匹配单词 | @H_403_20@
-r | 递归查找 | @H_403_20@
-A # | 显示所匹配到行,及其后面的#行 | @H_403_20@
-B # | 显示所匹配到行,及其前面的#行 | @H_403_20@
-C # | 显示所匹配到行,及其前后的#行 | @H_403_20@
-E | 使用扩展正则表达式 | @H_403_20@
三、举例:
匹配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)" * (\<、\>:单词锚定除外)