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
下一篇 2015-05-11

相关推荐

  • Tomcat及Tomcat集群

    Tomcat集群实现的三种方式 配置 Tomcat1 配置环境 ip a add 192.168.88.101/24 dev ens33 yum install ntpdate -y ntpdate 172.16.0.1 安装java yum install java-1.8.0-openjdk-devel -y 安装tomcat yum install t…

    Linux干货 2017-07-08
  • 双主模型的Nginx高可用负载均衡集群

    实验目的:使用keepalived实现Nginx的双主高可用负载均衡集群 实验环境:两台Nginx proxy(双主Nginx,各需要两块网卡,eth0连接内网,eth1连接外网)、两台web server(请求的负载均衡)、一台client用于验证结果。 注意:为了不影响实验结果,在实验开始前先关闭iptables和selinux 操作步骤: 一、配置IP…

    2017-05-13
  • mysqld_multi 多实例部署

    序言:多实例?Why?   随着硬件层面的发展,linux系统多核已经是普通趋势,而mysql是单进程多线程,所以先天上对多进程的利用不是很高,虽然5.6版本已经在这方面改进很多,但是也没有达到100%,所以为了充分的利用系统资源,mysql有自己的补充,那就是可以部署多实例,一个实例一个端口。     1,准备好mysql环境…

    2017-11-16
  • 运维架构之httpd

    Web Service 传输层:提供进程地址 Port number tcp:传输控制协议,面向连接,通信前需建立虚拟链路,结束后拆除;0-65535 udp:用户数据报协议,无连接;0-65535 IANA 0-1023:众所周知,永久分配给固定应用使用;22/tcp(ssh)、80/tcp(http)、443/tcp(https) 1024-41951:…

    系统运维 2018-06-04
  • Linux Shell(脚本)编程入门

    为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建…

    Linux干货 2017-08-05
  • Linux简单命令

    cal 日历 bc  计算器     obase=2 输出为二进制       ibase=2输入为二进制      \onnn八进制      \xHH十六进制 $()识别命令和变量,同反向单引号 , 可在命令调用另一个命令的执行结果时用 字体颜色:红色-打包文件(压缩包),绿色-可执行,浅蓝-软连接,蓝色-目录 echo $SHELL查看当前shell …

    Linux干货 2018-03-18