正则表达式

 

文本处理三剑客

grep:文本过滤

grep,egrep(支持扩展正则表达式),fgrep(不支持正则表达式)

grep  需要查找的字符串 查找的目标文件

-v #取反

-i #忽略大小写

-n #显示目标字符串的行号

-c #显示匹配到的次数

-p #静默模式

-o #仅显示匹配到的字符串

-A# #显示包含关键字的后续几行

-B# #显示包含关键字的前几行

-C# #显示包含关键字的前后几行

-e #实现多个选项间的逻辑or关系(或)

-w #匹配整个单词

-E #匹配扩展正则表达式,等价于egrep

-F #不支持正则表达式,等价于fgrep

nmap -v -sP 172.20.0.0/16 #查看该网段中开机的机器有几个

正则表达式:

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)

不表示字符字面意义,而表示控制或通配的功能

基本正则表达式:BRE

扩展正则表达式:ERE

程序支持:grep、sed、awk、vim、less、nginx等

元字符分类:

字符匹配

. 匹配任意单个字符

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

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

[:alnum:] 字母和数字

[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z

[:lower:] 小写字母 [:upper:] 大写字母

[:blank:] 空白字符(空格和制表符)

[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)

[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)

[:digit:] 十进制数字 [:xdigit:]十六进制数字

[:graph:] 可打印的非空白字符

[:print:] 可打印字符

[:punct:] 标点符号

匹配次数

*:匹配前面的字符任意次数;贪婪模式

例:grep “x*y”

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

\?:匹配其前面的字符0或1次;即前面的可有可无

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

\{m\}:匹配前面的字符m次;

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

\{0,n\}:匹配前面的字符至多n次;

\{m,\}:匹配前面的字符至少m次;

写正则表达式最好用引号引起来

位置锚定

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

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

^PATTERN$:用于模式整行;

^$:空行;

\<或\b:词首锚定:用于单词模式的左侧;

\>或\b:词尾锚定:用于单词模式的右侧;

\<PATTERN\>:匹配整个单词;

分组

\(\);将一个或多个字符捆绑在一起当做一个整体进行处理;

例: \(xy\)*ab

Note: 分组括号中的模式匹配到的内容会被正则表达式引擎记录与内部的变量中,这些变量的命名方式为:\1,\2,\3…

\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

\(ab\+\(xy\)*\):

\1:ab\+\(xy\)*

\2;xy

后向引用:引用前面的分组括号中的模式所匹配字符,(而非模式本身)

图片1图片2

egrep及扩展的正则表达式

egrep = grep -E #匹配扩展正则的元字符

字符匹配:

.任意单个字符

[]指定范围的字符

[^]不在指定范围的字符

扩展正则表达式

次数匹配:

*:匹配前面字符任意次

?: 0或1次

+:1次或多次

{m}:匹配m次

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

位置锚定:

^ :行首

$ :行尾

\<, \b :语首

\>, \b :语尾

分组:

()

后向引用:\1, \2, …

或者:

a|b: a或b

C|cat: C或cat

(C|c)at:Cat或cat

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95056

赞 (0)
老司机丨快上车老司机丨快上车
上一篇 2018-04-06 20:23
下一篇 2018-04-06 20:44

相关推荐

  • 正则表达式详细用法

    grep命令: 文本过滤(按行过滤) 参数                 -v 取反                 -i 忽略大小写                 -n 显示行号                 -c 统计匹配行数                 -q 静默执行(不显示执行结果)                 -o 仅显示搜索到的字符…

    Linux笔记 2018-04-08
  • 第六周博客作业

    一、简述osi七层模型和TCP/IP五层模型
    二、简述iproute家族命令
    三、详细说明进行管理工具htop、vmstat等相关命令,并举例
    四、使用until和while

    2018-04-20
  • 第三周作业

    1 列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户名登陆多次,则只显示一次。
    2 取出最后登陆到当前系统的用户的相关信息。
    3 取出当前系统上被用户当作其默认shell的最多的那个shell.
    4 将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5 取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6 列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字装换为大写后保存至/tmp/etc.conf文件中。
    7 显示/var目录下一级子目录或文件的总个数。
    8 取出/etc/group文件中第三个字符段数值最小的10个组的名字。
    9 将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)创建组distro, 其GID为2016
    (2)创建用户mandriva, 其ID号为1005,基本组为distro
    (3)创建用户mageia, 其ID号为1100,家目录为/home/linux
    (4)给用户mageia添加密码,密码为mageedu
    (5)删除mandriva, 但保留其家目录
    (6)创建用户slackware, 其ID号为2002, 基本组为distro, 附加组为peguin
    (7)修改slackware的默认shell为/bin/tcsh
    (8)为用户slackware的新增附加组admins

    2018-06-05
  • Linux计算MD5和Sha1的命令

    Linux计算MD5和Sha1的命令

    Linux笔记 2018-06-07
  • 新开始,新航程

           每一个夏天都是变动的季节,这个夏季我毕业了。大学最后的时光是在实验室度过的,每天都被瓶瓶罐罐所包围,鼻子里不时的飘进乙酸乙酯的香味,研究完了生物柴油的催化,是时候该为自己的未来找一条出路了。         大二的时候出于对计算机的着迷,一不小心点进了51cto,从此就走上了不归路。从计算机网络到linux,再到mysql,我在这个世界里乐此不…

    Linux笔记 2018-07-21