grep与基本正则表达式基本用法

正则表达式:Regual Expression  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: ignorecase. 忽略字符的大小写;

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

                   -v, -invert-match: 显示不能被模式匹配到的行;

                    -E:支持使用扩展的正则表达式元字符

                    -q   –quiet, –silent: 静默模式,即不输出任何信息;

  -A #:   after,后#行

  -B#:    before,前#行

  -C#:    context, 前后各#行

基本正则表达式元字符:

        字符匹配:

   . :  匹配任意单个字符

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

 [^]:  匹配指定范围外的任意单个字符

       [:digit:]所有 数字   [:lower]所有的小写字母

      [:upper:]所有的大写字母,[:alpha:]所有的字母。[:alnum:]包含数字的字母

[:punct:]所有标点符号的   [:space:]所有空白符号的

 匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;默认工作与贪婪模式;

* :匹配其前面的字符任意次; 0, 1, 多次;

例如: grep"x*y"

             abxy

             aby

              xxxxy     yab   都匹配  

    。*:匹配任意长度的任意字符

   \?:   匹配其前面的字符0次或者1次;即前面的字符是可有可无的;

\+:  匹配其前面的字符1次或多次; 即其前面的字符要出现至少1次;

\{m\}: 匹配其前面的字符m次:

\{m,n\}:  匹配前面字符至少m次,至多n次;

\{o,n}:  至多n次

\{m,\}:  至少m次

位置锚定:

^ :行首锚定;用于模式最左侧、

$:行尾锚定;用于模式的最右侧;

^PATTERN$: 用于PATTERN来匹配整行;

  ^$:空白行;

^[[:space:]]*$空白行包含空白字符行

单词:非特殊字符组成的连续字符(字符串)都称为单词;

\<或\b:词首锚定,用于单词模式的左侧;

\>或\b:  词尾锚定,用于单词模式的右侧;

\<PATTERN\>:  匹配完整单词;

分组及引用:

练习:

1、显示/etc/passwd文件中不以/bin/bash结尾的行;

    ~]# grep -v/bin/bas$" /etc/passwd

,找出/etcpasswd文件中两位数或三位数

~]# grep "\<[0-9]\{2,3}\>" /etc/passwd

3、找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面非空白字符的行,

  ~]# grep "^[[:space:]]\+[^[:space:]]*$" /etc/grub2/cfg

4、找出“netstat -tan"命令的结果中以”LISTEN"后跟0、1或多个空白字符结尾的行;

 ~]# nestat -tan | grep "LISTEN[[:space:]]*$"


分组及引用

    xy*ab

    \(\):  将一个或多个字符捆绑在以前,当作一个整体进行处理;

   \(xy\)*ab

Note: 分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内容的变量中,这些变量为:

\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;

\2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;

\3:模式从左侧起,第三个左括号以及与之匹配的右括号之间的模式所匹配到的字符;

。。。。。

  括号不能交叉,可以嵌套

     He loves his lover.

     He likes his liver.

      She likes her liker.

      She loves her liker.

~]# grep "\(l..e\).*\1" lovers.txt

后向引用: 引用前面的分组括号中的模式所匹配的字符;

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

(0)
shadowshadow
上一篇 2016-11-03
下一篇 2016-11-03

相关推荐

  • 如何使用正则表达式

    正则表达式(Regular Expression)就是使用简单的字符按照预先设定的规则来完成复杂的功能,说白了,正则表达式是一种字符串的匹配方式,就是用预先设定好的规则来描述我们想要表达的内容,它是由普通字符以及元字符组成的字符串,其中元字符不表示本身的意义,而是用于表达控制或通配等功能。 为什么要用这个东西那,我想,每一个学习计算机的人都应该明白,计算机就…

    Linux干货 2015-10-27
  • 第八周作业

    1. 写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;     在线的主机使用绿色显示;     不在线的主机使用红色显示; #!/bin/bash # for i in {1..254};do         pi…

    Linux干货 2017-02-24
  • 【福利贴-招聘】- python运维开发工程师

    职位描述  岗位职责: 1、负责公司CMDB的建设,包括资产管理、dns、工单系统、ngnix自动化、监控等的开发 2、帮助运维团队和业务团队提高自动化效率 3、维护和开发持续化集成环境; 4、负责公司运维系统的规划、选型、部署上线和日常维护管理工作; 5、负责CMDB团队的建设、管理和人才培养机制…

    Linux干货 2015-04-03
  • 【26期】Linux第二周学习小总结

    关于用户组的一些小小的整理     本周学习很多的知识,一些文件管理的技巧和命令,重定向和管道的实用技巧和拓展,最后则是到了我们的用户组的权限和管理,既然说到了管理,我们都知道在Linux中,老师讲的最多的一句话就是一切皆文件,既然是文件就会有用户去用,在里面进行各种的操作,比如增删改查啊,对文件的重新定义啊,那我们就…

    2017-07-21
  • Linux系统上获取命令的帮助信息

    获取命令的使用帮助: 内部命令:help COMMAND   #针对内检命令 外部命令: (1) 命令自带简要格式的使用帮助      COMMAND –help (2) 使用手册:manual  [root@localhost /]# ls /usr/share/man   #记住这个…

    Linux干货 2016-08-15
  • 网络基础笔记

    网络管理笔记 1. 网络概念:     一组网络设备或计算机,通过无形的规则链接起来的体系!    2. 应用程序种类:     (1)批处理应用程序:            FTP、TFTP、库存更新    &nbsp…

    Linux干货 2017-03-16

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-10 19:55

    总结的不错~能扩充点会更好~继续加油~