正则表达式介绍及grep的使用

一、正则表达式介绍

1、什么是正则表达式

正则表达式就是处理字符串的方法,它是以行为单位,通过一些特殊符号的辅助,以及相应的工具来快速搜索某指定的字符串。日常中支持正则表达式的常用工具有vigrepawksed等。

2、正则表达式用途

1)可以帮组系统管理员快速处理分析日常登录信息,相关服务的运行日志等;

2)方便文档编辑

3、正则表达式分类

1)基本正则表达式

2)扩展正则表达式

 

二、基本正则表达式

1、字符匹配

.:匹配任意单个字符

[]:匹配指定集合中的任意单个字符

[^]:匹配指定集合外的任意单个字符

2、匹配次数

*:匹配其前面的字符任意次

\?:匹配其前面的字符0次或1

\+:匹配其前面的字符出现至少1

\{m\}:匹配其前面的字符m

\{m,n\}:匹配其前面的字符至少m次,至多n

.*:匹配任意长度的任意字符

3、位置锚定符号

^:行首锚定

$:行尾锚定

^$:空白行

\<:词首锚定(可使用\b

\>:词尾锚定(可使用\b

4、分组

\(\):后向引用

模式中,如果使用\(\)实现了分组,在某行文本的检查中,如果\(\)的模式匹配到了某内容,此内容在后面的模式中可以被引用;

使用\1,\2等进行引用

5、常用的特殊符号

[[:digit:]], [0-9]代表数字

[[:lower:]], [a-z]代表小写字符

[[:upper:]], [A-Z]代表大写字符

[[:alpha:]], [a-zA-Z]代表任意英文大小写字符

[[:alnum:]], [0-9a-zA-Z]代表英文大小写字符及数字

[[:space:]]代表空白字符

[[:punct:]]代表标点符号

 

三、扩展正则表达式

1、字符匹配

与基本正则表达式一样

2、匹配次数

*:匹配其前面的字符任意次

?:匹配其前面的字符0次或1

+:匹配其前面的字符至少1

{m}:匹配其前面的字符m

{m,n}:匹配其前面的字符至少m次,至多n

3、位置锚定符号

与基本正则表达式一样

4、分组

():后向引用

 

四、grep的使用

1、语法格式

grep [option] 'pattern'filename

2、常用选项

-v:方向选取

-o:仅显示匹配到内容

-i:忽略字符大小写

-E:使用扩展正则表达式

-n:显示行号

-A#:同时显示出后面的#

-B#:同时显示出前面的#

-C#:同时显示出前面的#行,后面的#

五、egrep的使用

1、语法格式

egrep  'pattern' filename或者grep -E  'pattern' filename

 

六、实例演示

1、显示/etc/passwd中含有root关键字并显示行号

# grep -n 'root' /etc/passwd

2、显示/proc/meminfo文件中以大写或小写S开头的行

# grep -i '^s' /proc/meminfo

3、显示/etc/fstab中非注释行

# grep -v "^#" /etc/fstab

4、显示/boot/grub/grub.conf中以至少一个空白字符开头的行

# grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf