正则表达式的定义:

计算机科学中,有一种使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,它就叫做正则表达式。

正则表达式的功用:

在文本编辑器中,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言中,也都支持正则表达式来进行字符串的操作。因此它被广泛应用到各种计算机语言和领域中。

正则表达式的分类:

正则表达式就其表现形式来说,一般分为两类。基本的正则表达式和扩展的正则表达式。下面我们就此展开说明:

    基本正则表达式:

字符匹配:

.匹配任意单个字符

[]匹配指定范围内的任意单个字符

[0-9],[[:digit:]]所有数字

[a-z],[[:lower:]]所有小写字母

[A-Z],[[:upper:]]         所有大写字母

[[:space:]]         空格

[[:punct:]]         所有标点符号

[[:alpha:]]         所有字母

[[:alnum:]]         所有数字和字母

[^]取反

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

次数匹配:

*前面字符可出现任意次

\?前面字符可出现0次或1次

\{m\}前面字符要出现m次

\{m,n\}前面字符至少出现m次,至多出现n次

\{m,\}前面字符至少出现m次

\{0,n\}前面字符至多出现n次

位置锚定:

^锚定行首

$锚定行尾

^$空白行

\<锚定词首

\>锚定词尾

分组引用:

\(\)分组

\#引用


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    扩展正则表达式:

字符匹配:

.匹配任意单个字符

[]匹配指定范围内的任意单个字符

[0-9],[[:digit:]]所有数字

[a-z],[[:lower:]]所有小写字母

[A-Z],[[:upper:]]         所有大写字母

[[:space:]]         空格

[[:punct:]]         所有标点符号

[[:alpha:]]         所有字母

[[:alnum:]]         所有数字和字母

[^]取反

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

次数匹配:

*前面字符可出现任意次

?前面字符可出现0次或1次

+前面字符至少出现1次

{m}前面字符要出现m次

{m,n}前面字符至少出现m次,至多出现n次

{m,}前面字符至少出现m次

{0,n}前面字符至多出现n次

位置锚定:

^锚定行首

$锚定行尾

^$空白行

\<锚定词首

\>锚定词尾

分组引用:

()分组

\#引用

或者:

#|n或者

---------------------------------------------------------------------------------------------------------------------------------

grep的定义:

grep全称global search regular expression and print out the line,即全面搜索正则表达式并把行打印出来。

grep的功用:

grep是一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。

grep家族的分类:

Unix的grep家族包括grep、egrep和fgrep。egrep是grep的扩展,支持更多的正则元字符。而fgrep是fixed grep或fast grep,是把所有的字母都看作单词,所以它不再支持正则表达式的应用。

grep的选项:

-v反向选取

-o仅显示匹配的字串,而非字串所在的行

-iignore-case,忽略字符大小写

-E支持使用扩展正则表达式

-A #显示后面#行

-B #显示前面#行

-C #显示前后#行

--color=auto将匹配内容自动添加颜色

---------------------------------------------------------------------------------------------------------------------------------

实例:

1.显示/proc/meminfo文件中以大写或小写S开头的行;

grep -i '^s' /etc/passwd

        简述正则与grep_正则表达式

2.显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

        简述正则与grep_正则表达式_02

3.找出/etc/passwd文件中的一位数或两位数;

grep "\<[0-9][0-9]\?\>" /etc/passwd

        简述正则与grep_正则表达式_03

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

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

        简述正则与grep_grep_04