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

相关推荐

  • Linux启动和内核管理

    Linux启动和内核管理   CentOS 5和6的启动流程服务管理Grub管理自制Linux启动排错编译安装内核   Linux组成Linux: kernel+rootfskernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能rootfs:程序和glibc库:函数集合, function, 调用接口(头文件负责描述)…

    Linux干货 2017-09-04
  • 马哥教育网络班20期+第三周课程练习

    1. 列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [oracle@ocp ~]$ who root     pts/1        2016-06-26 …

    Linux干货 2016-06-26
  • 五大主流数据库模型

    导读:无论是关系型数据库还是非关系型数据库,都是某种数据模型的实现。本文将为大家简要介绍5种常见的数据模型,让我们来追本溯源,窥探现在流行的数据库解决方案背后的神秘世界。 什么是数据模型? 访问数据库中的数据取决于数据库实现的数据模型。数据模型会影响客户端通过API对数据的操作。不同的数据模型可能会提供或多或少的功能。一般而言,数据模型不会直接提供过多的功能…

    Linux干货 2015-04-04
  • 常见RAID磁盘阵列组合简介

    常见RAID磁盘阵列组合简介    RAID,是Redundant Arrays of Inexpensive Disks的简写,磁盘阵列。现今的计算机世界,最值钱的是什么?软件、硬件?都不对,应该是承托在其之上的数据。对于我们来说,数据是无价的,硬件损坏了,可以重新购置。软件损坏了,也可以重新安装,但数据一旦丢失,就有可能再也找不回来了…

    Linux干货 2016-06-01
  • 系统基础之sed工具详解

    sed工具详解 NAME:  sed – stream editor for filtering and transforming text(实现文本替换和过滤功能)  类型: 行编辑器(流) 特点: 把文件中的每一行加载到内存中,匹配模式,把能够匹配到模式的内容输出到屏幕,不修改原文件 工作模式:   每一次读取一…

    Linux干货 2016-08-10
  • Linux 基础知识(六.二)

    1、复制/etc/rc.d/rc.sysinit至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加# [root@server01 tmp]# cp /etc/rc.d/rc.sysinit /tmp/ [root@server01 tmp]# sed -n "s@^[[:space:]]\+@#&@…

    Linux干货 2016-11-14

评论列表(1条)

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

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