linux文本处理利器之grep

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文本处理利器之grep相关的知识,希望对你有一定的参考价值。

一、grep是什么?

    Grep : global search regular expression(RE) and print out the line,全面搜索正则表达式,并把行打印出来,是一个可以从文本或流中查找字符串的一个命令行工具,它可以通过使用正则表达式来更加灵活的查找一个字符 串,就是通过复杂模式进行查找以满足你的需求。

二、正则表达式的分类

    1、基本正则表达式:BRE(BASIC REGULAR EXPRESSION)

    2、拓展正则表达式:ERE(EXTEND REGULAR EXPRESSION)

    3、perl正则表达式:PRE(PERL REGULAR EXPRESSION)

三、grep、sed、awk家族的特点

    1、grep、egrep、fgrep正则的特点

        1)grep支持BRE、ERE、PRE

            a.grep指令不跟任何参数,则表示使用BRE

            b.grep指令后跟-E参数,则表示使用ERE

            c.grep指令后跟-P参数,则表示使用PRE

        2)egrep支持ERE、PRE

            a.egrep指令不跟任何参数,则表示使用ERE

            b.egrep指令后跟-P参数,则表示使用PRE

        3)fgrep默认固定字符串模式

            a.fgrep默认不支持BRE、ERE,只支持固定字符串模式,速度相比grep,egrep都要快

            b.fgrep指令后跟-G选择,则表示支持BRE

    2、sed正则表达式特点

        1)sed支持BRE、ERE

            a.默认支持BRE

            b.sed指令后跟-r参数,则表示使用ERE

            c.sed用来处理文本文件,对文本文件的内容进行curd操作,按行进行处理

    3、awk正则表达式特点

        1)awk(gawk)正则表达式特点

            a.默认支持ERE

            b.只要对文本文件的列进行处理

四、grep命令的基本使用

    1、grep的使用语法

        1)grep [option] pattern [FILE...]    

    2、grep常用选项

        1)-c:之输出匹配行的数目

        2) -i:不区分打小写

        3) -r:递归查找(当前搜索目录以及其子目录)

        4) -n:输出匹配的行及行号

        5)-l:多文件查找时只输出匹配字符串的文件名

        6)-v:反向匹配,即显示不匹配的行

        7)-o:仅显示匹配到的字符串的本身

        8)-q:相当于--quiet,静默模式(可以用来判断此次查找是否包含此字符串,适合在脚本中使 用

        Notice:如果正则表达式中有元字符,则要使用引号扩起来,模式中有变量则使用双引号, 否则  使用单引号。

        a.centos7:使用grep的别名,匹配到的结果默认高亮显示

            技术分享

        b.centos6:默认没有使用

            技术分享

        3、基于基本正则表达式元字符的使用

            1)  字符匹配

                a.  .    匹配任意单个字符

                    技术分享

                b. []   匹配指定范围内的单个字符

                    技术分享

                c. [^]  匹配范围之外的字符

                    技术分享

             2)    次数匹配

                a.  *    匹配前面的字符任意次(0,1或多次)

                    技术分享

                b.  .*   a后面任意长度的任意字符

                    技术分享

                c.   \+ 匹配前面的字符至少一次

                    技术分享

                d.  \? 匹配前面的字符0或1次

                    技术分享

                e.  \{m\} 其前面的字符出现m次,m为非负整数

                    技术分享

                f.  \{m,n\} 其前面的字符出现m次,m为非负整数

                        \{0,n\} 至多n次

                        \{m,\} 至少m次

                    技术分享

            3) 位置锚定

                    限制模式匹配到的文本,只能出现在目标文本的那个位置

                a. ^ 行首锚定,用于模式的最左侧,^pattern

                    技术分享

                b. $  行尾锚定,用于模式的最右侧,$pattern

                    技术分享

                c. ^pattern$ 匹配整行

                    ^$ 用来匹配空行

                    技术分享

            4) 单词锚定

                 a. \<或\b 词首锚定,用于单词模式的左侧,格式为\<pattern,pattern\b

                    技术分享

                b. \>或\b 词尾锚定,用于单词模式的右侧,格式为pattern\>,pattern\b

                    技术分享

            5) 分组与引用

                a. \(pattern\) 将此次匹配到的字符串作为一个不可分割的整体进行处理

                    技术分享

            6) | 或者

                a. a|b 表示a或者b, 表示的是整个表达式的左侧或者是右侧

                    技术分享

五、egrep之拓展表达式

        

本文出自 “11304510” 博客,请务必保留此出处http://11314510.blog.51cto.com/11304510/1750400

以上是关于linux文本处理利器之grep的主要内容,如果未能解决你的问题,请参考以下文章

Linux文本处理工具三剑客之grep

Linux文本处理之 grep egrep

linux文本处理三剑客之grep

Linux文本处理三剑客之grep

Linux文本处理之grep

Linux文本处理工具之grep sed简概