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

相关推荐

  • N22期-第五周博客作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost jimmy]# egrep '^(root|fedora|user1)\>' /etc/passwd | cut -d: -f7 /bin/bas…

    Linux干货 2016-09-10
  • ls、shutdown命令使用及命令提示符格式修改

        ls、shutdown命令使用及命令提示符格式修改                      &nbs…

    Linux干货 2016-10-17
  • 磁盘文件系统基础(一)

    磁盘的主要硬件单元有:     1、磁头:通过电磁感应的方式对磁盘数据进行读写。     2、磁道:在磁盘自传过程中磁头划过的圆形轨迹,这些轨迹是肉眼看不见的特色磁化区域。     3、扇区:磁盘上的每个磁道被等分为若干个圆弧,这些圆弧被称…

    Linux干货 2016-10-27
  • 一键搭建mysql集群系列一

    一键自动安装mysql 5.7 shell脚本自动化安装二进制mysql-5.7 本节主要用到四个shell脚本 和 一台资料存储机器(IP:192.168.42.26) install_mysql.sh 自动化安装mysql脚本 ntpdate.sh 时间同步脚本 system_init.sh 系统初始化脚本 yum.sh yum源配置脚本 执行步骤: 1…

    2017-05-13
  • 用户、组及其管理

    用户和组管理    Linux是一个多用户、多任务的操作系统。多用户、多任务就是可以在系统上建立多个用户,多个用户可以在同一时间内登录同一台主机的系统执行不同的任务,而互不影响。例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内root用户可能在管理维护系统,www用户可能在修改自己的程序和操作…

    Linux干货 2016-08-04
  • 【典韦文章】zabbix实现微信报警

    作者 典韦,追马代发 一、注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com/一个人最多申请5个公众号,所以还是可以的 申请完之后就可以根据腾讯的提示使用微信公众号了,然后用你自己的微信扫描关注微信号。 就可以看到用户数了,接下来的就要使用的用户的微信ID号了。点击用户查看用户的微信ID号。在浏览器查看用户的微信ID号。就是…

    Linux干货 2015-08-24

评论列表(1条)

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

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