码迷,mamicode.com
首页 > 其他好文 > 详细

基本正则表达式grep命令使用

时间:2015-07-04 16:52:41      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:expression   search   option   表达式   linux   

grep(Global search REgular expression and Print out the line.)是一个文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。

使用man命令查看grep使用语法格式:

grep [OPTIONS] PATTERN [FILE...]

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] 


其中option为grep命令的选项,pattern为要匹配的简单字符串或携带特殊字符的模式字符串,file为文件列表,可有多个文件。  

   

例如:   ls /etc | grep ‘*p‘  查找输入内容中含有字母p

     

          

         linux针对grep查询结果输入时高亮显示参数设置:alias grep=‘grep --color=auto‘

         

      正则表达式:

         是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能;

          元字符:不表示其字面意义,而用于额外功能性描述

               

       基本正则表达式的元字符:

    1、 字符匹配:

             .:匹配单个字符  grep ‘r..t‘ /etc/passwd

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

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

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

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

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

             [[:punct:]]  :特殊字符,标点符号

             [[:alpha:]]  :所有大小写字母

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

             [^]:取反

    2、  次数匹配元字符:用于实现指定其前面的字符所能够出现的次数

         *:任意长度,它前面的字符可以出现任意次

            例如:x*y

               xxy,xyy,y,

         \?:0次或1次,它前面的字符是可有可无的

            例如:x\?y

              xy,y,ay

          \{m\}:m次,它前面的字符要出现m次

               例如:x\{\2}y

               xy,xxy,y,xxxxy匹配子串

          \{m,n\}:至少m次,至多n次

               例如:x\{2,5}    

                  xy,y,xxy

          \{m,\}:至少m次

          \{0,m\}:至多n次

         

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

         

             工作于贪婪模式:尽可能多的去匹配

        3、 位置锚定:

            ^:行首锚定

               写在模式最左侧

            $:行尾锚定

               写在模式最右侧

            ^$: 空白行    grep ‘^$‘  /etc/issue | wc -l

           

            不包含特殊字符的连续字符组成的串叫单词:

            \<:词首,出现于单词左侧,\b

              \<char

            \>:词尾,出现于单词右侧,\b  

              char\>          

            \<char\>:前后都锚定

           

         4、分组:

            \(\)

             例如:\(ab\)*  

             分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,

             

          5、引用:

               例如\(ab\(x\)y\).*\(mn\)

               有编号:自左而右的左括号,以及与其匹配的右括号

               \(a\(b\(c\)\)mn\(x\)\).*\1

               

             \#:引用第n个括号所匹配到的内容,而非模式本身

               

                例如:

                \(ab\?c).*\1

                         

         grep命令选项:

            -v:反向选取       例如: grep -v ‘^$‘ /etc/issue

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

            -i:ignore-case,忽略字符大小写

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

            -A #  前一行

            -B #  后一行

            -C #  显示上下文

            --color=auto 将pattern在匹配行中高亮输出

         注意:

        (1).选项区分大小写
        (2).多个选项可以一起使用

           

基本正则表达式grep命令使用

标签:expression   search   option   表达式   linux   

原文地址:http://284397316.blog.51cto.com/10456921/1670914

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!