shell脚本day04-grep与正则表达式

一、grep程序

  LINUX下有文本处理三剑客 -- grep sed awk

  •   grep: 文本 行过滤工具
  •   sed: 文本 行编辑器(流编辑器)
  •   awk: 报告生成器,做文本输出格式化

  1.grep包含三个命令:grep egrep fgrep用来进行行模式(pattern)匹配

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

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

    *grep默认使用正则表达式进行文本匹配*

  2.grep的用法

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

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

    -i 忽略大小写

    -v 进行反选

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

    --color=auto 语法着色

    -n 显示行号

二、正则表达式--PATTERN

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

  1.字符匹配

    [] 范围内任意一个字符

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

    字符类:[:digit:] [:ainum:][:alphe:][:upper:][:space:][:punct:]

  2.字符匹配

    * 匹配到前面字符0次到N次

    ?匹配前面字符0次到1次

    + 匹配前面字符1次到N次

    \{m\} 匹配前面一个字符m次

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

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

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

  3.位置锚定

    ^ 锚定行首

    $ 锚定行尾

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

    \> 锚定词尾

    \< 锚定词首

  4.分组

    abc* 即代表 abcccccc

    \(\) 实例:\(\abc\) 即把abc看作一个整体,即为abcabcabc

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

posted on 2019-08-14 19:26  茶l  阅读(138)  评论(0编辑  收藏  举报