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

(0)
上一篇 2015-05-11 11:59
下一篇 2015-05-11 12:14

相关推荐

  • Mariadb数据库复制系列(一):主从复制

      实验一:MySQL主从复制的实现 1、实验环境 确保各节点之间的时间同步 2、修改主节点的mysql服务配置文件,让其符合主从架构中主节点的要求 3、查看主节点现有数据情况和二进制日志使用情况 4、对主节点的数据利用xtrabackup进行完全备份 由于两个从节点是后期加入,故采取备份主节点的数据,还原到从节点上,然后让从节点从备份时刻的二进制日志的位置…

    2016-11-24
  • 马哥教育网络班22期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   cp -r /etc/skel /home/tuser1    chmod -R go=— /home/tuser1 2、编辑/etc/group文件,添加组hadoo…

    Linux干货 2016-09-19
  • 第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d' ' -f 1 |sort |uniq -c 2、取出最后登录到当前系统的用户的相关信息。 ~]# last | head -1 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 ~]# cat…

    Linux干货 2016-12-14
  • Find命令简介与使用

    用途:         find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 语法: find [OPTION]… [查找…

    Linux干货 2016-08-30
  • N21天天第十五周课程练习

    1、总结sed和awk的详细用法; sed Sed本质上是一个编辑器,但是它是非交互式的;同时它又是面向字符流的,输入的字符流经过sed的处理后输出。 Sed本身是一个管道命令,可以分析standard input的,主要是用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、   选取特定行等功能 格式:sed&nbs…

    Linux干货 2016-12-05
  • Linux 文件系统权限

    一、简述权限  文件系统的权限管理机制的建立,约束了用户对数据的操作。 1、对系统安全而言  管理员的操作权限非常大,足以破坏系统,权限机制将管理员与普通用户之间区分开,防止系统被随意破坏。 2、对用户而言  Linux是一个多用户的操作系统,不同用户间为了防止其他人破坏数据或访问数据,文件系统的权限管理是非常必要的。 二、文件…

    Linux干货 2016-08-04