正则表达式详解​

 

正则表达式详解

一、概述

  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)
wxdz_2004(古雨秋)wxdz_2004(古雨秋)
上一篇 2015-05-11
下一篇 2015-05-11

相关推荐

  • N26 第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令有:mkdir rmdir cp mv rmmkdir:创建文件夹命令格式:mkdir [OPTION]… DIRECTORY… # 创建日期文件夹       &…

    Linux干货 2017-01-17
  • 马哥教育网络班21期+第四周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限; [root@localhost /]# cp -r /etc/skel /home/tuser1 [root@localhost /]# chmod&nb…

    Linux干货 2016-07-22
  • 磁盘管理

    回顾 {a..f} a b c d e f ]# arr=({a..z}) ]# echo ${#arr[*]} 26 ]# N1=N2 ]# N2=zhuchaoming ]# echo ${!N1} eval N1=\$$N2 echo $N1 创建临时文件 mktemp NAME.XXX 交互式登录 /etc/profile –> /…

    Linux干货 2016-09-07
  • 第一周作业

    一、计算机的基本组成和功能   cpu包括运算器、控制器、寄存器、缓存       运算器:计算功能,对数据进行加工处理的的部件;       控制器:负责从存储器取出指令,控制cpu计算器之间的运行结果和状态;       寄存器:暂存指令和数据的地方,存储…

    Linux干货 2016-12-04
  • iptables

    规则格式:iptables   [-t table]   COMMAND   chain   [-m matchname [per-match-options]]   -j targetname [per-target-options]     -t table:&nb…

    Linux干货 2017-06-16
  • example:Disk and LVM

    1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项。     1)创建磁盘分区 [root@localhost ~]# fdisk /dev/sdb    Device conta…

    Linux干货 2016-08-29