Linux文本处理工具grep,egrep

简介:

    grep即(Global search REgular expression and Print out the line)全局的搜索正则表达式并且打印显示出来。

    通俗点讲:根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。

        

    正则表达式:

        正则表达式是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能;

        元字符:不便是其字面意思,而用于额外功能性描述

            

    基本正则表达式的元字符:

        字符匹配:

             .:匹配任意单个字符

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

            [0-9],[[:digit:]]:任意单个数字

            [a-z],[[:lower:]]:任意单个小写字母

            [A-Z],[[:upper:]]:任意单个大写字母

            [[:space:]]:空白字符

            [[:punct:]]:标点符号

            [[:alpha:]]:所有大小写字母

            [[:alnum:]]:所有数字字母

            [^]:取反

       次数匹配:

            用于实现指定其前面的字符所能出现的次数

            *:任意长度,它前面的字符可以出现任意次

            \?:出现0次或者1次,也就是说它前面的字符是可有可无的

            \{m\}:m次,它前面的字符要出现m次

            \{m,n}:至少m次,至多n次(m<n)

            \{m,\}:至少m次

            \{0,n\}:至多n次

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

        位置锚定:

            ^:行首锚定,写在模式最左侧

            $:行尾锚定,写在模式最右侧

            ^$:空白行

            \<:词首锚定,出现于单词左侧

            \>:词尾锚定,出现于单词右侧

            \b:词首词尾都可以

            (注:不包含特殊字符的连续字符组成的串叫单词)

        分组:

            \(\)    例如:\(ab\)*

            注:分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被多次引用

        

        引用:

            \n:引用第n个括号所匹配到的内容,而非模式本身

        

    扩展正则表达式:

        字符匹配:

            .:任意单个字符

            []:匹配任意字符范围内

            [^]:匹配任意范围外

        次数匹配:

            *:任意次

            ?:0次或1次

            +:至少1次

            {m}:精确匹配m次

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

            {m,}:至少m次

            {0,n}:至多n次

        锚定

            ^:行首

            $:行尾

            \<,\b:词首

            \>,\b:词尾

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

        分组:

            ()

        引用:

            \n

        或者:

            a|b:a或b

        

    grep的用法:

        grep [option]… ‘PATTERN' FILE…

        grep的命令选项:

            -v:去反向选取

            -o:仅显示匹配的字串本身,而非字串所在的行

            -i:ignore-case,忽略字符大小写

         

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

            -A:显示之前两行

            -B:显示之后两行

            -C:显示上下两行

    egrep:egrep用法等同于grep -E


实战操作:

    1.显示/proc/meminfo文件中以大写或小写S开头的行;

QQ截图20150508141815.png

QQ截图20150508142408.png

    2.显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

QQ截图20150508143022.png

    3.显示/etc/passwd文件中其默认shell为/bin/bash的用户;进一步;仅显示上述结果中ID号最大的用户;

QQ截图20150508143526.png

    4.找出/etc/passwd文件中的一位数或两位数;    

        

QQ截图20150508144148.png

     5.显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

QQ截图20150508144445.png

    6.找出netstat -tan命令执行结果中以‘LISTEN’结尾的行;

QQ截图20150508144731.png

    7.找出ifconfig命令结果中1-255之间的数字;         

QQ截图20150508150110.png    8.显示当前系统上root或git用户的默认shell;

QQ截图20150508152016.png

    9.使用echo命令输出一个路径,而后使用grep取其基名

QQ截图20150508152710.png

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

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code