13 shell脚本--005grep和正则表达式

1、grep程序

  grep:文本 行过滤工具

  sed:文本 行编辑器(流编辑器)

  awk:报告生成器,(做文本输出格式化)

  

  grep包含3个命令:grep、egrep、fgrep,他们是用来进行 行模式(pattern)匹配的

    egrep = grep -E   //使用扩展的正则表达式进行匹配

    fgrep = fast grep  //只使用文件通配符进行匹配

    grep   //默认使用正则表达式进行文件匹配

  grep的用法:

    grep 【option】... PATTERN [filename]

  grep的常见选项:----option

    -E     //支持使用扩展的正则表达式(regexp)

    -P     //使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed awk grep使用的regexp引擎都不相同)

    -i      //忽略大小写

    -v     //进行反选

    -o     //仅仅输出匹配的内容(默认输出的是匹配到的行)

    -n     //显示行号

    --color=auto     //语法着色

    -w     //匹配固定单词

    <[0-9]{2,3}>

         <[0-9]{2,3}

  PATTERN(pattern)--正则表达式

    作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身含义,需要 进行转义;

    回顾文件通配符:* ? [ ] [^ ]

    1、字符匹配

      .    //任意一个字符-------->?

      [ ]  //范围内的任意一个字符---------->[ ]

      [^ ]  //范围外任意一个字符---------->[^ ]

      字符类:[0-9] = [[:digit:]]

          [0-9][a-z][A-Z] = [[:alnum:]]

             [a-z] = [[:lower:]]

          [A-Z] = [[:upper:]]

          [~!@#$%^&*] = [[:punct:]]

          [[:space:]]

    2、次数匹配

      *     //匹配前面的(紧挨着的字符)0次到无数次

      ?   //匹配前面的(紧挨着的字符)0次到1次

      +     //匹配前面的(紧挨着的字符)1次到无数次     ( * = ?+

      {m}  //匹配前面的字符m次

      {m,n}  //匹配前面的字符m到n次

      {0,n}    //匹配前面的字符0到n次

      {m,}     //匹配前面的字符至少m次

    3、位置锚定

      ^     //锚定行首

      $     //锚定行尾

          //锚定词首和锚定词尾

      >    //锚定词尾

         <    //锚定词首       < oot>

    4、分组

      abc*   abccccc   abc我们要看成一个整体

      ()   示例:(abc)*  abcabcabc  abccc

      **分组特性:默认情况下,Linux系统会分为指定变量,变量的表示形式为1 2 3(后向引用)

      补充:扩展的正则表达式,

          【标准正则表达式的都去掉】

          分组:()后向引用1  2  3...... 

          或:       |    grep -E "(svm|vms)" /proc/cpuinfo     //查看cpu的虚拟功能

原文地址:https://www.cnblogs.com/wx00/p/11349943.html