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

相关推荐

  • Shell运算符

    Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加: #!/bin/bash val=`expr 2 + 2` echo …

    Linux干货 2017-04-18
  • ​Linux基础知识之screen命令详解

    该博文以CentOS6.8_x86_64系统为基础,Xshell5远程登录CentOS6.8系统,以root身份登录系统,以Xshell5发起screen帮助,用系统命令行界面去连接。 screen命令:         打开新的screen: screen -S [SESSION]   (打开一个名叫hel…

    Linux干货 2016-07-29
  • week5

    1、显示当前系统上root、fedora或user1用户的默认shell; useradd fedora useradd user1 egrep "^(root|fedora|user1)" /etc/passwd | cut -d: -f1,7 2、找出/e…

    Linux干货 2016-11-24
  • 文件处理工具系列(二):行编辑器sed

    1、sed介绍     sed(Stream EDitor),是一种行编辑工具,它一次处理一行内容。处理时,把当前匹配到的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令对这些数据做出相应的增删改查操作,处理完成后,默认输出至屏幕,而未被匹配到的行也将默认输出至屏幕。而原来的文件内容并没有发生改变,除…

    Linux干货 2016-08-11
  • man 命令简单介绍

    man n command man手册页分为下面几个部分: 1 普通命令2 内核提供的系统调用3 库调用4 设备文件5 文件格式规范6 游戏7 杂项8 系统管理命令

    Linux干货 2018-03-03
  • 初识LINUX

    初识LINUX 一、计算机的组成 二、Linux的发行版本 发行版:数百种之多,主要分为: Debian分支:ubuntu、mint、knopix Slackware分支:S.u.S.E–>SLES、OpenSUSE RedHat分支: Redhat–>Centos   Fedora Core Gent…

    Linux干货 2016-09-17

评论列表(1条)

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

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