正则表达式

 

文本处理三剑客

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

相关推荐

  • sed作业

    编程基础 程序:指令+数据程序编程风格:过程式:以指令为中心,数据服务于指令对象式:以数据为中心,指令服务于数据shell程序:提供了编程能力,解释执行 程序的执行方式 计算机:运行二进制指令编程语言:低级:汇编高级:编译:高级语言–>编译器–>目标代码 java,C#解释:高级语言–>解释器&#8211…

    2018-04-15
  • 软件包管理 rpm yum的使用

    软件包管理 链接主要作用是吧各个模块之间互相引用的部分处理好, 使得各个模块之间能够正确的链接,分为静态和动态 静态链接  以.a为后缀  把程序对应的依赖库复制到包           升级难 需重新编译  占用空间多 迁移容易 动态链接  以.so为后缀 把依赖加做动态链接    占用空间少  升级方便           若一个库被删,那么所有依赖此库…

    Linux笔记 2018-04-22
  • 浅析网络IO模型

    物是人非事事休,欲语泪先流。

    2018-04-09
  • 源码的编译和安装

    以httpd的安装为例,详细讲解了编译安装的原理

    2018-04-21
  • Linux运维命令以及概念整理总结(4)

    1、grep
    2、正则表达式
    3、扩展正则表达式
    4、vim文本编辑工具

    2018-04-14
  • 正则表达式用户管理

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

    2018-06-04