1、正则表达式的概念:

   所谓正则表达式就是处理字符串的方法,它是以行为单位来进行字符串处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序
2、基础正则表达式的元字符的意义:
[:lower:]、[a-z] 代表小写字母
[:upper:]、[A-Z] 代表大写字母
[:alnum:]、[a-zA-z0-9] 代表数字和大小写字母
[:alpha:]、[a-zA-Z] 代表大小写字母
[:digit:]、[0-9] 代表数字
[:space:] 代表空白符

[:punct:] 代表标点符号


注意:一般在使用方括号字符集的时候会配合使用[],比如:grep "^[[:space:]]*" /etc/inittab
       这个命令的意思就是显示/etc/inittab文件中以空白字符开头的行
   命令中注意 ^ 和 [ ] 的使用,通常用来匹配开头是某个字符,如 ^[[:space:]]表示开头是空白符,如果写成
   ^[:space:],那就是锚定[]里面的内容
   比如这个命令就是正常的使用[:space:]:
       grep "^#[:space:]\{1,\}" /etc/password 显示/etc/password文件中以#开头后面一个或多个空白符的行

所以  [ ] 的作用是用来锚定某个字符或代表多个可能的字符集(简单就是[]内的内容为一个整体)


^word   待查找的字符串(word)在行首 如: #grep "^root" /etc/passwd,查                      找行首为root的用户信息
word$  待查找的字符串(word)在行尾
.    匹配到的至少有一个任意的字符  如:l.e ,匹配到的是loe,lbe,lse,le
*       匹配前面的字符无限次   如:de* ,匹配到的可以是dee,deee,deeee
.*      匹配任意长度的字符任意次
\      转义符,将特殊符号的特殊意义去除
\{m,n\} 匹配到的字符出现m到n次   如: #grep "ro\{1,4\}t" /etc/passwd                   在/etc/passwd中查找含有rot中o出现有1次或者2次的那行  
\{m,\}  匹配到的字符最少出现m次  如:ro\{1,\}t ,o至少出现一次,像                           root,rooot
\{0,n\} 匹配到的字符出现0到n次
\{n\}   匹配到的字符最多出现n次   如:ro\{1\}t ,o最多出现一次,像rot,rt
^    锚定行首   如: grep "^root" /etc/passwd ,在/etc/passwd中,以                             root为行首的那行
$     锚定行尾
^$    空白行
word\>  锚定词尾
\<word  锚定词首
分组引用: \(), \1,\2
s/ / /g  --> 全局查找替换
s/l..e/$er/g ---> &引用前面匹配的字符 l..e 并替换成 l..eer
3、扩展正则表达式:
{m,n}  匹配到的字符出现m次到n次
{0,n}  匹配到的字符出现0到n次
{m,}   匹配到的字符出现至少m次
   ?     匹配到前面的字符0或1次
   ()     找出组字符串   如:查找(good)或(gold)这两个字符串,就是                                      g(la|oo)d
+      匹配前面的字符至少1次,相当于\{1,\}
|      或者
4、grep命令的用法
grep是分析一行信息,若当中有我们所需要的信息,就将该行拿出来,简单的语法如下:
grep [选项] ‘查找字符串’ filename
选项:
-v 对所显示的结果取反  如:在last的输出的信息中,只要没有root就取出,并且仅取第一列 #last | grep -v "root" | cut -d' ' -f1
-o  仅显示匹配到的字符串                   -i  忽略字母的大小写
-E  支持扩展正则表达式
-n  顺便输出行号  如:在/etc/passwd中有root的那行,并且显示行号, #grep -n "root" /etc/passwd
 例子:在last显示的信息中,取出不含root的那些行,并且输出的时候显示行号:
#last | grep -vn "^root"
 例子:在/etc/passwd中,以r为开头的,后面跟无论大小写至少出现一次的那些行的信息
#grep “^r[a-zA-Z]\{1,\}" /etc/passwd