正则表达式regular expression。缩写成REGEXP是用来匹配文件内容的。通过特点的字符通配文件内容的。
扩展正则表达式用在egrep命令中egrep grep -E
扩展正则表达式的要点有如下几点
1、字符匹配
. 表示任意一个字符
[] : 表示匹配中括号内的任意一个字符
[^] : 表示匹配中括号内除外的任意一个字符。
需要注意的字符集的表示方式
[[:punct:]] 表示匹配标点符号的
[[:space:]] 表示匹配空白字符的
[[:digit:]] 表示匹配数字的
[[:alpha:]] 表示匹配字母的
[[:lower:]] 表示匹配小写字母的
[[:upper:]] 表示匹配大写字母的
[[:dignum:]] 表示匹配数字字母的。
同时匹配是支持取反操作的。[^[::]]
2、关于次数锚定
*表示匹配其前面的字符任意次。包含零次
例子
假如有一个文本的内容如下
a
b
ab
aab
abb
amnb
acdb
amnbmnb
grep a.*b reg.txt #表示匹配包含以a开头以b结束的行
?: 表示匹配其前面的字符一次或零次。注意在扩展正则表达式中不要使用转义符\
{m,n}: 表示匹配其前面的字符至少m次至多n次主要不要使用转义符\
grep a.{1,3}b reg.txt #表示匹配以a开头b结束中间至少有一个至多有三个任意字符的行
表示匹配其前面的字符至少一次。
egrep a.b reg.txt # 表示匹配包含以a开头不结束中间至少有一个字符的行
# 注意在扩展正则表达式中?是不需要\转义符的
\b \< 表示匹配单词首部
grep \
grep \bab reg.txt
都是匹配以ab词组开头的行
\> \b 表示匹配单词尾部
3、位置锚定
^: 表示锚定行首
$表示锚定行尾
4、分组表示
():对括号内的内容进行分组匹配;\1,\2,\3(可以进行后项【前项】匹配)
假设有一个文本是
He love his lover
She like her lover
He like his lover
She like her liker
需要匹配一行中如果有同时包含两个love或两个like的行
egrep (l..e).*\1 reg.txt
[rootlocalhost testdir]# egrep (l..e).*\1 reg.txt
He love his lover
She like her liker
[rootlocalhost testdir]# egrep l..e.*l..e reg.txt
He love his lover
She like her lover
He like his lover
She like her liker
需要注意两者的区别用法。什么是后项匹配。
5、扩展正则表达式的或者表示方法
| 对 | 左右两边表示或者。
C|cat 可以匹配的C 和 cat 还是Cat 和 cat呢
[rootlocalhost testdir]# egrep C|cat reg.txt
cat
Cat
C
Chinese
可以使用 egrep (C|c)at reg.txt
可以匹配到Cat和cat
所以| 或的用法是匹配| 两边的字符或者字符串。
转:https://blog.51cto.com/hongyilinux/1703166