grep与正则表达式,grep正则表达式


grep的作用:文本搜索工具,根据用户指定的“模式”对目标文件逐行进行匹配检查:打印匹配到的行。

  模式:正则表达式编写的过滤条件。

  正则表达式(REGEXP):由一类特殊字符及文本字符所编写的模式,其中有一些字符不表示字符字面意义,而表示控制或通配的功能。

    分成两类:

      基本正则表达式:BRE

      扩展正则表达式:ERE(grep -E,egrep)    

    grep的使用:

      grep [选项]  模式 [文件...]

        选项:

          --color=auto: 对匹配到的文本着色显;

          -v:显示不被”模式“匹配的行;                   

          -i:忽略字符大小写;

          -o:仅显示匹配到的字符串;

          -q: 静默模式,不输出任何信息;

          -A #:显示匹配行与后#行;

          -B #:显示匹配行与前#行;

          -C #:显示匹配行与前后各#行;

          -E:使用ERE(相当于,egrep)

 

基本正则表达式元字符:

  字符匹配:

    .:      匹配任意单个字符;

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

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

    [:alnum:]:  代表英文大小写字符及数字,及a-z,A-Z,1-9

    [:alpha:]:   代表英文大小写字符,及a-z,A-Z

    [:cntrl:]:     代表控制按键,CR、LF、Tab、Del等

    [:digit:]:     代表数字,1-9

    [:graph:]:   除了空格键与Tab键以外的所有按键

    [:lower:]:    代表小写字母,a-z

    [:print:]:     代表任何可以被打印出来的字符

    [:punct:]:    代表标点符号,即"'?!;:#$

    [:space:]:   任何会产生空白的字符,包括空格键[Tab]CR等

    [:upper:]:    代表大写字母,A-Z

    [:xdigit:]:     代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符

      注:以上[:***:]需要双中括号使用,即: [[:***:]]

 

  匹配次数:

    *:匹配前面的字符0次或多次;

    .:匹配任意单个字符;

    .*:即匹配任意字符0次或多次;

    \?:匹配前面的字符0次或1次;

    \+:匹配前面的字符1次或多次;

    \{m\}:匹配前面的字符m次;

    \{m,n\}: 匹配前面的字符至少m次,至多n次;

    \{0,n}:匹配前面的字符至多n次;

    \{m,\}:匹配前面的字符至少m次;

 

  位置锚定:

    ^:行首锚定,用于模式最左侧;

    $:行尾锚定,用于模式最右侧;

    \< 或 \b:词首锚定,用于单词模式的左侧;

    \> 或 \b:词尾锚定,用于单词模式的右侧

 

  分组及后向引用:

    \(\):将一个或多个字符捆绑起来,当作一个整体进行处理

    后向引用:应用前面的分组括号中模式所匹配的字符(而非模式本身),\1,\2....\n

      例如:\(abc*\(def\)ghe\?\)

         \1:abc*\(def\)ghe\?  对应第一个左括号所在括号中的内容

         \2:def        对应第二个左括号所在括号中的内容

  扩展正则表达式元字符:

      同上正则表达式:区别在于特殊符号不需要使用“\”进行转义。?等于\?,()等于\(\),{m}等于\{m\},+等于\+。  注:\<,\>,\b仍然需要加“\”

      n|m:|匹配左边或右边的所有内容

      例如:

          abc|def 匹配abc或def,默认匹配左右边所有字符,可用()进行分组,如下

          ab(c|de)f  匹配c|de

    

 

相关内容