学习shell第四天

一、grep程序
  1、linux下有文本处理三剑客 -- grep sed awk
    grep:文本行过滤工具
    sed:文本行编辑器(流编辑器)
    awk:报告生成器(做文本输出格式化)

 

  2、grep
    包含三个命令:grep egrep fgrep,他们是用来进行 行模式(pattern)匹配的
    egrep = grep -E //使用扩展的正则表达式进行匹配
    fgrep = fast grep //只使用文件通配符进行匹配
    *grep默认使用正则表达式进行文本匹配*

  3、grep的用法:
    grep [option] … PATTERN [filename]

 

 

 

  4、grep的常见选项 -- option
    -E 支持使用扩展的正则表达式(ERE)(regexp)
    -P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk 使用的regexp引擎也不相同)
    -i 忽略大小写
    -v 进行反选
    -o 仅仅输出匹配的内容(默认输出的是匹配到的行)
    --color=auto 语法着色
    -n 显示行号
    -w 匹配固定的单词

 

 

 

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

 

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

 

  1、字符匹配
    . 任意一个字符 相当于?
    [] 范围内的任意一个字符
    [^] 范围外任意一个字符
    字符类:[:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]
  2、次数匹配
    *匹配前面的字符0次到n次
    ?匹配前面的字符0次到1次
    + 匹配前面的字符1次到0次
      [abc]+ abbbbcccc
    \{m\} 匹配前面的字符m次
      a\{7\} aaaaaaa
    \{m,n\} 匹配前面的字符m到n次
    \{0,n\} 匹配前面的字符0次到n次 【0要不要?】
    \{m,\} 匹配前面的字符至少m次

 

  3、位置锚定

 

    ^ 锚定行首
    $ 锚定行尾
    \b 锚定词首和锚定词尾
    \> 锚定词尾
    \< 锚定词首
    <\root\> rooter

 


  4、分组
    abc* abcccc abc我们要看成一个整体
    \(\) 示例:\(abc\)* abcabcabc abcccc
    **分组特性:默认情况下,Linux系统会为分组指定变量,变量的表示形式\1 \2 \3 …

 

    示例:\(ab+\(xy\)*\) 其中\1 = ab+\(xy\)*,\2 = xy

posted @ 2019-08-15 20:42  老了杜杜  阅读(114)  评论(0编辑  收藏  举报