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\}\>

         \b<[0-9]\{2,3\}\b

  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、位置锚定

      ^     //锚定行首

      $     //锚定行尾

      \b    //锚定词首和锚定词尾

      \>    //锚定词尾

         \<    //锚定词首       <\root\>

    4、分组

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

      \(\)   示例:\(abc\)*  abcabcabc  abccc

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

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

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

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

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

posted @ 2019-08-14 11:13  Drige  阅读(139)  评论(0编辑  收藏  举报