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 00:20
下一篇 2016-11-03 12:01

相关推荐

  • lamp架构实现论坛架构及压力测试

    练习:分别使用CentOS 7和CentOS 6实现以下任务 (1) 配置四个基于名称的虚拟主机;   (a) discuzX   (b) wordpress   (c) drupal   (d) phpMyAdmin,此虚拟主机仅支持https协议; (2) 对phpMyAdmin首页做压力测试   分别给…

    Linux干货 2016-10-17
  • 第七周学习总结–系统启动流程

    写在前面 作为一个理工科的你,我相信你一定给自己或者给别人装过windows操作系统,作为windows操作系统都图形化了,因此我们可能很难去了解中间都发生了什么。比如使用U盘安装的时候,网上一大堆某某某U盘制作系统工具,按照网上的教程,制作完成以后,就可以在要装系统的电脑上点击电源键狂按F12(不同的电脑可能不同)进入BIOS设置了,然后就等着使用了。作为…

    2018-01-14
  • 计划任务和周期性任务

    linux计划任务     功能:指定未来的某以特定的时间点执行一次任务     命令:at、bathc     at命令:         选项: &nbsp…

    Linux干货 2016-09-12
  • 基于Keepalived+Nginx实现高可用负载均衡

    练习贴,测试keepalived+lvs_dr高可用负载均衡

    2017-12-11
  • Linux系统的终端类型

    Linux系统的终端类型    Linux系统的终端主要包括控制台终端、控制终端、串口终端、伪终端、虚拟终端。 1.  控制台终端(/dev/console)。    在Unix系统中,计算机显示器通常被称为控制台终端。Console与虚拟终端相关联,内核将信息送到控制台终端上(/dev/conso…

    Linux干货 2015-09-14
  • linux用户和组的配置文件

    1./etc/passwd:用户及其属性信息(用户名,密码,uid,gid,gecos注释性描述信息,家目录,登录shell)在/etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。      …

    2017-07-22

评论列表(1条)

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

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