正则表达式详解​

 

正则表达式详解

一、概述

  GREP(global search regular expression(RE) and print out the
line),是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。利用这些返回值就可进行一些自动化的文本处理工作。

二、语法格式

  正则表达式: grep [option] …'pattern' file….

  扩展正则表达:grep -E 'PATTERN' file….

  fgrep :fast grep ,不支持使用正则表达式

  语法格式上扩展正则表达式仅是比正则表达式多了一个参数 –E;

三、元字符集

1、字符匹配:

    . : 匹配任意单个字符

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

        [0-9] [[:digit:]]

        [a-z] [[:lower:]]

        [A-Z] [[:upper:]]

        [[:space:]] [[:punct:]] [[:alpha:]]

    [^]:取反

2、次数匹配:用于实现指定其前面的字符所能够出现的次数

     *:任意长度,用于能够匹配他前面的字符可以出现任意次

    \?:0次或1次,他前面的字符可有可无的

    \{m\}:m次,他前面的字符出现m次

    \{m,n}: 至少m次,至多n次

    \{m,\}:至少m次

    \{0,n\}:至多n次

    .*:任意长度的任意字符,工作于贪婪模式:尽可能的去匹配

3、位置锚定

    行首锚定:^ :要写在模式最左侧

     行尾锚定:$: 写在模式最右侧

     ^$ : 空白行 实例: grep "^$" /etc/issue | wc – l

    不包含特殊字符的连续字符组成的串叫单词

         \<:词首,出现在单词左侧

        \<char

        \>:词尾, 出现于单词右侧

        \>char

        \b:词首词尾都行

4、分组模式

    \(\):分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用;

        实例:grep "\(ro\)\{1,\}" /etc/passwd 至少出现一次

    引用:有编号:自左而右的左括号,以及与其匹配的右括号;从内向外;

        \#:引用第n个括号所匹配到的内容,而非模式本身

四、命令选项

     -v:反向选取; 如: grep –v "^$" /etc/issue

    -o:仅显示匹配到的字串,而非字串所在的行 grep "r..t" /etc/passwd -o

    -i : ignore-case :忽略字符大小写 Cat , cat grep -i "cat"

    -E:支持使用扩展正则表达式

    -A #: 被匹配到后面的#行 — grep -A 1 "r..t" /etc/passwd    

    -B #: 前面

    -C #:前后各一行

五、正则表达式和扩展正则表达式的字符集区别

    1、字符匹配基本一致

    2、次数匹配

        *:任意次

        ?: 0或1次

        +:至少1次

        {m}:精确匹配m次

        {m , n}: m到n次

        {m,} :至少m次

        {0,n}:最多n次

    3、锚定基本一致

    4、分组

        ()

         引用: \1,\2,\3

        或者:

         a |b :a或者b

        conC|cat : conC或者cat

        con(C|c)at : conCat或者concat

六、实例解析

    1、显示/proc/meminfo文件中以大写或小写S开头的行

        1.png

    2、显示/etc/passwd中其默认shell为/bin/bash的用户

        2.png

    3、显示/boot/grub/grub.conf中以至少一个空白字符开头的行

        3.png

    4、添加用户,bash,testbash,basher,nologin(修改此shell为nologin)而后找出当前系统上其用户名和默认shell相同的用户

        4.png                此题值得好好思考一番;

    5、扩展题目:

         新建一个文本文件,

                 He like his lover.

                 He love his lover.

                 He like his liker.

                 He love his liker.

         找出其中最后一个单词是由此前某单词加r构成的行

        5.png

    6、找出ifconfig命令结果中1-255之间的数字

        6.png

    7、挑战题:写一个模式,能匹配合理的ipv4地址

        7.png

        8.png

 

原创文章,作者:wxdz_2004(古雨秋),如若转载,请注明出处:http://www.178linux.com/4078

(0)
上一篇 2015-05-11 11:57
下一篇 2015-05-11 12:01

相关推荐

  • FHS文件系统各目录及Linux文件类型和颜色标识整理

    一.FHS (Filesystem Hierarchy Standard文件系统层级标准)   使用文件系统层级标准可以使软件和用户可以预测已安装文件和文件夹位置 文件系统各目录:   /boot     系统引导启动时要加载的静态文件,内核和ramdisk及grub等    (系统启动时…

    Linux干货 2016-10-17
  • centos启动流程

    1、加电自检(power on system test POST) 加电,就是按下电源键使电脑主机通电,在诸多硬件设备中有一个被称为CMOS设备在计算机启动的过程中起到了至关重要的作用,CMOS在加电之后会启动保存在它上面的BIOS程序,即基本输入输出系统(Basic Input Output System)。自检,主要是检测各…

    Linux干货 2016-09-11
  • Linux的获取系统的帮助信息及man文档说明

    Linux的获取系统的帮助信息及man文档说明 帮助命令有内部命令帮助和外部命令帮助两种 内部命令获得帮助使用下面命令 # help COMMAND 例如: [root@localhost ~]# type type type is a shell builtin [root@localhost ~]# help type type: type [-afpt…

    2018-02-28
  • find查找

    find查找是生产中最常见的日志查找工具 下面看看它的用法 基本用法: find    查找路径    查找标准    查找到以后的处理动作 查找路径:需要被查找的文件所在的路径,一定是个目录,默认情况下为当前的目录 查找的标准:查找的时候用什么方式去查找 处理动作:文件查找完毕后,需要对查找出来的…

    Linux干货 2017-05-08
  • 20161028第9天作业

    20161028第9天作业 1、编写脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问” 2、编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率率,如果超过80%,就发广播…

    Linux干货 2016-10-30
  • linux文件系统

    linux的文件系统:             根文件系统为rootfs(root file system)           &nbsp…

    Linux干货 2015-12-19