基本正则表达式grep的用法

grep [options] PATTERN [FILE...] 
就是我们只要指定选项、指定模式、指定文件即可
如:grep 'root' /etc/passwd  显示结果如下
下面是grep所支持的常用选项
-i:忽略大小写
--color:给符合条件的加上颜色
-v:显示没有被模式匹配的行
-o:只显示被模式匹配的字符串
-E:使用扩展正则表达式
-A+#:显示其匹配的行和匹配行的后#行 
-B+#:显示匹配的行和匹配行的前#行
-C+#:显示匹配的行和匹配行的前后各#行
正则表达式的元字符
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
如:grep [^0-9] etc/passwd 意思就是除了0到9这些数字不被匹配,其他的都是匹配对象
字符集合:
[:digit:]: 数字                 [:lower:]:小写字母
[:upper:]: 大写字母            [:punct:]:标点符号  
[:space:]:空白字符            [:alpha:]: 大小写字母
[:alnum:]数字和大小写字母
匹配次数:
首先我们建个文档test.txt 里面的内容为(a,b,ab,aab,acb,adb,amnb)
*:匹配其前面的字符任意次
如:grep 'a*b' test.txt  则被匹配的是 (b,ab,aab) 
.*:任意长度的任意字符
如:grep 'a.*b' test.txt  则被匹配的是(ab,aab,acb,adb,amnb)
\?:匹配其前面的的字符1次或0次
如:grep 'a\?b' test.txt  则被匹配的是(b,ab)
\{m,n\}:匹配其前面的字符至少m次,至多n次
如:grep 'a\{1,2\}b' test.txt 则被匹配的是(ab,aab)
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
如:grep '^root' etc/passwd 意思就是:只要是root开头的行就是所匹配的行
$:锚定行尾,此字符前面的任意内容必须出现在行尾
如:grep 'bash$' etc/passwd 意思就是:只要是bash结尾的行就是所匹配的行
^$:空白行  grep '^$' /etc/inittab  /etc/inittab中的空白行就会被匹配
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词的尾部出现
书写格式:grep "\<root" /etc/passwd
          grep "root\>" /etc/passwd
 分组:
\(\)
如:ab* 其意思是a后面的b可以出现0次1次或任意次
   如分组\(ab\)* 则表示ab为一个整体可以出现0次1次或任意次
后向引用
\1:引用第一个左括号以及与之对应的右括号所包括的所有内容
建个文档test.txt 内容为(He love his lover.
                       She like her liker.
                        He like his lover.)
命令及命令结果如图所示:
 \2:引用第二个左括号以及与之对应的右括号所包括的所有内容
扩展正则表达式(egrep)
egrep = grep  -E 
字符匹配:
.: 匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
次数匹配:
*:匹配其前面的字符任意次
?:匹配其前面的的字符1次或0次
+:匹配其前面的字符至少1次
{m,n}:不需要反斜杠(\)
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意内容必须出现在行尾
\<:锚定词首,其后面的任意字符必须作为单词首部出现
\>:锚定词尾,其前面的任意字符必须作为单词的尾部出现
分组:
():分组 
\1, \2, \3, ...
或者
|: or
如:egrep 'C|cat' /test.txt  其意思是说在test.txt中查找C或cat