文本处理三剑客之grep及正则表达式

文本处理三剑客之grep及正则表达式

 

文本处理工具:

 

Linux上处理文本三剑客:

    Grep:文本过滤器工具(模式:pattern)工具;

    Sed: stream editor,流编辑器;文本编辑工具;

    Awk: linux上实现为gawk,文本报告生成器(格式化文本);

 

    正则表达式:regual expresslon,REGEXP

        由一类特殊将字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能;

            分两类:

                基本正则表达式:BRE

                扩展正则表达式:ERE

 

         元字符:、(hello[[:space:]]\+\)\+

 

Grep : global search REgular expression and print out the line.

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

     模式:有赠则表达式的元字符及文本字符所编写出的过滤条件;

 

     正则表达式引擎;

 

     Grep [options] PATTERN [FILE….]

     Grep [options] [-e PATTERN | -f FILE] [FILE…..]

 

         OPTIONS:

             –color=auto: 对匹配到文本进行着色后高亮显示

             -i:忽略字符的大小写

             -0:只显示匹配到的字符本身

             -v:显示不能被模式匹配到的行

             -E: 支持使用扩展正则表达式元字符:

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

 

             -A#: after,后#行

             -B#:before,前#行

             -C#:前后#行

 

基本正则表达式元字符:

                     .   : 匹配任意单个字符;  

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

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

                     [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:] 、[:punct:]、[:space:]

正则表达式

v  匹配次数:用在要指定次数的字符后面,用于指定前面的字 符要出现的次数

        *:匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配

        .*:任意长度的任意字符

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

        \+:匹配其前面的字符至少1次

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

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

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

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

 

v 位置锚定:定位出现的位置

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

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

        ^PATTERN$: 用于模式匹配整行

        ^$: 空行

        ^[[:space:]]*$ :空白行

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

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

         \<PATTERN\>:匹配整个单词

 

 分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:\(root\)\+

     分组括号中的模式匹配到的内容会被正则表达式引擎记录 于内部的变量中,这些变量的命名方式为: \1, \2, \3, …

     \1: 从左侧起,第一个左括号以及与之匹配右括号之间 的模式所匹配到的字符;      

     实例:

         \(string1\+\(string2\)*\)

         \1: string1\+\(string2\)*

         \2: string2

      后向引用:引用前面的分组括号中的模式所匹配字符(而 非模式本身)

 

egrep及扩展的正则表达式 v

     egrep = grep -E

   vegrep [OPTIONS] PATTERN [FILE…] v

     扩展正则表达式的元字符: v

     字符匹配:

         . 任意单个字符

         [] 指定范围的字符

         [^] 不在指定范围的字符

    次数匹配:

         *:匹配前面字符任意次

         ?: 0或1次

         +:1次或多次

         {m}:匹配m次

         {m,n}:至少m,至多n次

 

     位置锚定:

         ^  :行首

         $  :行尾

         \<, \b :语首

         \>, \b :语尾 v

      分组:

          ()

          后向引用:\1, \2, … v

       或者:

           a|b

           C|cat: C或cat

           (C|c)at:Cat或cat

             

原创文章,作者:xiaoqiang512,如若转载,请注明出处:http://www.178linux.com/33244

(0)
xiaoqiang512xiaoqiang512
上一篇 2016-08-12 09:02
下一篇 2016-08-12 09:02

相关推荐

  • Linux软件包管理

      在我们的运维工作,总是避免不了安装某些软件,或者编译安装某些软件,我们知道操作系统当中的程序都是有程序员通过开发工具开发的来,程序员直接编写的纯文本的文档我们称之为源代码,但我们的计算机只能识别二进制程序,那么必须要将源代码变成计算机能识别的二进制程序,这里需要通过编译器来进行编译,将源码转换成二进制程序,再通过安装即可。 还有一类程序就是二进…

    Linux干货 2016-08-24
  • bash特性之基础

    bash shell 命令历史history 环境变量: HISTSIZE :命令历史记录的条数 HISTFILE :~/.bash_history HISTFILESIZE: 显示环境变量:echo    环境变量的修改:export  history history [-c] [-d&…

    Linux干货 2016-11-22
  • Linux添加swap交换分区

    添加swap交换分区 SWAP即交换分区是一种类似于Windows系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为SWAP毕竟是用硬盘资源虚拟的,所以速度上比真实物理内存要慢很多,一般只有当真实物理内存耗尽时才会调用SWAP。 1、创建一个分区,看上篇文章,别着急w保存退出 修改分区的类型输入t: Comman…

    Linux干货 2016-09-07
  • 超全超详细的HTTP状态码大全

    本部分余下的内容会详细地介绍 HTTP 1.1中的状态码。这些状态码被分为五大类:  100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 500-599 用…

    Linux干货 2015-03-20
  • 第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类的命令: mkdir, rmdir mkdir:make directories mkdir [OPTION]… DIRECTORY… -p: 自动按需创建父目录; -v: verbose,显示详细过程; -m MODE:直接给定权限; 注意:路径…

    Linux干货 2018-01-17
  • shell编程之变量,数值计算,字符比较,文件测试小记

     变量     变量:能储存计算结果或能表示值抽象概念,其指向的内存空间中一段地址。        变量赋值:name=value    溢出:字符超过定义内存中间大小    变量类型:数据类型,存储的格式,参与的运算   &nb…

    Linux干货 2016-08-15