文本处理三剑客之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
下一篇 2016-08-12

相关推荐

  • M22 xfs文件系统命令总结

    Centos6.0及之前的默认文件系统是ext系列的,而在最新的Centos7上却使用了xfs作为默认的文件系统。在Centos7中xfs文件系统包括如下命令: xfs_admin:修改xfs文件系统的参数,需要先卸载分区 用法:xfs_admin [ -eflpu ] [ -c 0|1 ] [ -L label ] [ -U uuid ] device x…

    Linux干货 2017-03-16
  • linux文件权限练习(0803)

    1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?     不能cd到该目录,不能ls -l查看目录下文件的详细信息      2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作?…

    Linux干货 2016-08-04
  • issue设置和定时关机练习

    /etc/issue内的代码意义 \l 显示第几个终端机接口(tty)\m 显示硬件的等级 (x86_64)\n 显示主机的网络名称 (zcl-domain)\r 操作系统的版本 (2.6.32-642.e16)\t 显示本地端时间的时间(20:22:12) \d显示本地端的日期 (2016-8-5)\s 操作系统的名称(linux)  练习 1,…

    Linux干货 2016-08-05
  • Linux发展史

    简 述 Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,可支持32位和64位硬件。…

    2016-10-14
  • awk大法

    awk awk概念 一款用于数据流的文本处理工具,它将文件作为记录序列处理。在一般情况下,文件内容的每行都是一个记录。每行内容都会被分割成一系列的域,因此,我们可以认为一行的第一个词为第一个域,第二个词为第二个,以此类推。AWK程序是由一些处理特定模式的语句块构成的。AWK一次可以读取一个输入行。对每个输入行,AWK解释器会判断它是否符合程序中出现的各个模式…

    Linux干货 2016-12-04
  • 内核编译之增加ntfs文件系统

    内核编译 内核编译 单内核体系设计,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。 内核组成部分:     Kernel,内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-WERSION- RELEASE;     Kernel object…

    Linux干货 2016-09-13