一、基础介绍 全名:Global search REgular expression and Print out the lin 作用:文本搜索工具,根据用户指定的“模式”对目标文件逐行进行匹配检查;并打印匹配到的行 模式:由正则表达式字符及文本字符所编写的过滤条件

     分两类:
                 基本正则表达式:BRE
                 扩展正则表达式:ERE、grep -E,egrep

二、基本使用方法与简单示例

                 格式: grep [OPTIONS] PATTERN
                 如:  grep root  /etc/passwd
                 表示从etc下的passwd文件中匹配到含有root的行并打印到屏幕上

基本参数:
               --color=auto: 对匹配到的文本着色显示
               -v: 显示不被pattern匹配到的行
               -i: 忽略字符大小写
               -n:显示匹配的行号
               -c: 统计匹配的行数
               -o: 仅显示匹配到的字符
               -q: 静默模式,不输出任何信息
               -A #: after, 后#行
               -B #: before, 前#行
               -C #: context, 前后各#行
               -e:实现多个选项间的逻辑or关系 
                      grep –e ‘cat ’  -e ‘dog’  file
               -w:匹配整个单词
               -E:使用ERE
               -F:相当于fgrep,不支持正则表达式

字符匹配:                                     
               .   匹配任意单个字符
               []   匹配指定范围内的任意单个字符
               [^]  匹配指定范围外的任意单个字符
               [:alnum:] 字母和数字
               [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
               [:lower:] 小写字母    [:upper:] 大写字母
               [:blank:] 空白字符(空格和制表符)
               [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
               [:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
               [:digit:] 十进制数字 [:xdigit:]十六进制数字
               [:graph:] 可打印的非空白字符
               [:print:] 可打印字符
               [:punct:] 标点符号

匹配次数:

             * 匹配前面的字符任意次,包括0次
                     贪婪模式:尽可能长的匹配
             .* 任意长度的任意字符
             \? 匹配其前面的字符0或1次
             \+ 匹配其前面的字符至少1次
             \{n\} 匹配前面的字符n次
             \{m,n\} 匹配前面的字符至少m次,至多n次
             \{,n\} 匹配前面的字符至多n次
             \{n,\} 匹配前面的字符至少n次

位置锚定:

             ^ 行首锚定,用于模式的最左侧
             $ 行尾锚定,用于模式的最右侧
             ^PATTERN$  用于模式匹配整行
             ^$  空行
             ^[[:space:]]*$  空白行
             \< 或 \b 词首锚定,用于单词模式的左侧
             \> 或 \b 词尾锚定;用于单词模式的右侧
             \<PATTERN\> 匹配整个单词

简单示例:

            grep -v root /etc/passwd
            匹配到root的行不打印到屏幕,没有匹配到的反而打印出来
                                                                                
            grep -i root /etc/passwd
            匹配root时忽略大小写字符
                                                                                
            grep -i r..t /etc/passwd
            匹配已r开头t结尾中间任意两个字符的字符串
                                                                                 
            grep -i 'r[[:alnum:]][[:alnum:]]t' passwd
            匹配r开头t结尾 中间两个字母或数字的字符串,忽略大小写
                                                                                
            grep -i 'r[[:alnum:]]*r' /etc/passwd
            匹配r开头t结尾中间为字母或字符出现任意次的 字符串
                                                                                
            grep -i 'r[[:alnum:]]\?t' /etc/passwd
            匹配r开头t结尾、中间出现0或一次数字或字母的字符串
                                                                                 
            grep -i 'r[[:alnum:]]\+t' /etc/passwd
            匹配r开头t结尾、中间出现至少1次或更多次数字或字母的字符串
                                                                                 
            grep -i 'r[[:alnum:]]\{1,3\}t' /etc/passsd
            匹配r开头t结尾、中间出现至少1次、最多3次数字或字母的字符串

            grep -i '^[[:alnum:]]\{0,6\}t' /etc/passwd          
            匹配r开头t结尾、中间出现至少1次、至多3次数字或 字母的字符串、但是必须在行首                                                                                  
            grep -i '[[:alnum:]]\{0,6\}t$' /etc/passwd          
            匹配r开头t结尾、中间出现至少1次、至多3次数字或 字母的字符串、但是必须在行尾
                                                                                      
            grep '^$' /etc/passwd
            匹配文件中的空行
                                                                                      
            grep '^[[space:]]$' /etc
            锚定行首行尾为空白字符的行
                                                                                     
            grep -i '\<r[[:alnum:]]\{,3}t\>' /etc/passwd
            锚定开头为r结尾为t,中间出现至多3次字母或者数字的单词
							
							
							第一次写博客,有问题大佬请轻喷