正则表达式以及Linux文本搜索工具grep

一正则表达式

regual Expression  简称REGEXP

定义:由一类特殊字符以及文本字所编写的模式,其中有些字符不表示其字面意义,而用于统配和统配功能


分类:

    基本正则表达式:BRE 贪婪模式(尽可能长地去匹配符合模式的内容

    扩展表达式:ERE

BREERE区别:元字符不同

 基本正则表达式元字符

   字符匹配、次数匹配、位置锚定、分组及引用

   一、字符匹配

       .:匹配任意单个字符

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

        [^]:匹配指定外的任意单个字符

    \d:匹配数字

     \s:匹配空格

     \w:匹配任意字母数字下划线或汉字

    

[:digit:] :0-9

[:alpha:]所有的大小写

[:upper:]:所有大写字母

[:lower:]:所有小写字母

[:alnum:]:所有字母和数字

[:punct:]:所有的标点符号

[:space:]:空格和tab

二、匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数

*:匹配其前面的字符任意次;0,1,多次;

 .*:任意长度的任意字符

 \?:匹配前面的字符01

 \+:匹配前面的字符至少1

 \{m\}:匹配前面字符m

\{n,m\}:匹配前面字符至少m次,至多n

 

  三、位置锁定

      ^:行首锚定 ;用于模式的最左侧

     $:行尾锚定;用于模式的最右侧

          ^Pattern$:用于pattern来匹配某行

          ^$;空白行

          单词:非特殊字符组成的连续字符都称为单词

          \<\b:词首锚定,用于模式的最左侧

       \> \b:词尾锚定,用户模式的最右侧

 

 四、分组及引用(后向引用)(重点理解)

    分组符号\(\):将一个或多个字符捆绑在一起,当一个整体进行处理

    分组意义:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录到内存的变量中

    引用这些变量:\1:模式从左起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符。

 扩展的正则表达式

扩展正则表达式元字符

 字符匹配

   .:匹配任意单个字符

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

    [^]:匹配指定外的任意单个字符

[:digit:] :0-9

[:alpha:]所有的大小写

[:upper:]

[:lower:]

[:alnum:]

[:punct:]

[:space:]意义和正规表达式意义相同

 

次数匹配

  *:匹配其前面的字符任意次;0,1,多次;

    .*:任意长度的任意字符,不包含换行符号

    ?:匹配前面的字符01

 +:匹配前面的字符至少1

 {m}:匹配前面字符m

{n,m}:匹配前面字符至少m次,至多n

 

位置锚定

    ^:行首锚定 ;用于模式的最左侧

    $:行尾锚定;用于模式的最右侧

    \<\b:词首锚定,用于模式的最左侧

    \> \b:词尾锚定,用户模式的最右侧

分组及引用

      分组符号()

        a|b :ab

        c|cat :Ccat

        (c|C):cat Cat

二正则表达式之应用一:grep

grep定义:

作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行

 模式:由正则表达式的元字符及文本字符做编写的过滤条件

全拼:Global search regular  experssion an print out the line

grep egrep fgrep:区别及之间转换

grep:支持正规的正则表达式 ;grep -E=egrep  grep -F=fgrep

egrep:支持扩展正则表达式    ;egrep -G=grep

fgrep:不支持正规表达式

用法

grep [OPTINONS]  PATTER  FILE ()

    选项

–color=auto 自动为匹配的字符着色

 

-i ignorecase 忽略字符大小写

-o:只显示字符串的本身

-v–inver –match显示不被模式匹配的行

-E 支持扩展的正则表达式

-F 支持匹配的字符串

-q 安静模式既不输出任何信息

-A 数字n:显示搜索匹配到的前n行也显示

-B 数字n:显示搜索匹配到的后n行也显示

-C 数字n:前后n行都显示

-w :以单词进行搜索

-n 显示匹配的行号

-c统计匹配的行数

   – e:实现多个选项间的逻辑or关系grep –e ‘cat ’ – e ‘dog’ file

 

grep 结合正则表达式的实例引用:

实例一:搜索文件中含有root的用户并且不区分大小写,并且只将匹配的字符打印出来

        31.png

实例二:显示含有root单词或者hello单词的行

        32.png

实例三:-q模式不将结果显示到屏幕上(一般用于脚本的编写)

35.png

实例四:grep 结合正则表达式使用,显示出含有"rt 、rot或者roo….(任意个o)t的行并显示行号36.png

实例五:分组应用 添加用户 bash、 testbash、 basher以及nologin(其shell为/sbin/nologin),而后找出 /etc/passwd文件中用户名同shell名的行

37.png

更多实例详见:

20160804课后作业



原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/30069

(0)
wangnannanwangnannan
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • 第三周作业

    列出当前系统上所有已经登录的用户名,同一个用户登录多次,则只显示一次 [root@app02 ~]# who |grep -o -E '^\<[a-zA-Z]+\>'|sort -u root XIAOXIN 2. 取出最后登录到当前系统的用户相关信息 [r…

    Linux干货 2016-08-29
  • sed与vim相关练习

    sed 练习 以行为单位的新增/删除功能 1将 /etc/passwd 的内容列出并且打印行号,同时,请将第 2~5 行删除! 2在第二行后(亦即是加在第三行)加上“the is xing line?”字样! 3在第二行前(亦即是加在第而行)加上“the is xing line?”字样! 4在第二行后面加入两行字,例如“the is xing line &…

    Linux干货 2016-08-10
  • 计算机的组成、Linux主流三大版本的区别、Linux的哲学思想、Linux的使用格式及命令的使用简略说明,以及如何查看命令帮助、FHS目录机构

    计算机的组成极其功能? 按功能来说计算机是由运算器、控制器、I/O系统(输入、输出系统)、存储器五部分组成。 运算器:即中央处理器(CPU)作为五大部分中心的主脑,对数据进行逻辑运算或算数运算。 控制器:主要是指内存设备,将读取到的数据临时保存在内存中这个过程被成为寻址。在cpu中也有属于自己的控制器称之为CPU的寄存器来进行多指令的行。 I/O系统:输入系…

    2017-12-03
  • CentOS7下重置root密码

    CentOS7下重置root密码          Linux系统、UNIX系统和其他类UNIX系统中,存在唯一的超级用户root。普通用户密码忘掉可以用root用户重置,但是一旦root密码忘掉,事情就复杂起来了。本文主要介绍root密码忘掉之后,重置密码的过程。   &nbs…

    Linux干货 2017-03-30
  • http协议

    Web Service概述 web服务时一种应用程序的服务,它所提供的最主要的信息是一种超文本标记语言(HTML)、多媒体资源(如:视频、图片、音乐等)。HTML是一种纯文字的文本信息,通过所谓的标签来规范所要显示的内容格式,在客户端通过浏览器的形式对HTML及多媒体资源进行解析,然后呈现在终端上。主要由http和https协议实现 http协议概述 HTT…

    Linux干货 2016-10-28
  • 第四周作业

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

    Linux干货 2017-08-28