正则表达式

 

文本处理三剑客

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
下一篇 2018-04-06

相关推荐

  • 初识Linux集群

    Linux cluster基础与lvs简单介绍

    2018-06-24
  • 计算机构成简介与Linux基础知识

        ◆ 命令—Linux学习的基础,而基础就是核心。◆ 没有基础就只如空中楼阁,每次处理问题的时候,都需要向外界的力量求教,而缺乏自己解决问题的能力。◆ 学习比较被动,知识的储备速度不能紧跟使用需求。◆ SO,夯实基础反而成为重中之重。想要万丈高楼平地起,就先打好地基,在人们还看不见的时候,挥洒着汗水;而时间会给你成长的回报! 一、计算机构成与功能简介 …

    Linux笔记 2018-04-03
  • Linux用户和组管理

    Linux用户和组管理 众所周知,Linux是一个多用户、多任务(Multi-Tasks、Multi-Users)的操作系统。那么Linux是如何区分和认证用户的,系统对每个用户的授权是如何管理的,出现问题如何追溯每个用户在系统内的操作记录,等等,这些就涉及到Linux中用户和组的管理。 AAA介绍 Linux用户类别 Linux用户标识(UID) Linu…

    2018-05-06
  • 第六周笔记

    进程显示工具 ps -ef(有些人喜欢用)ps 带-不带-不一样a 包括所有终端的进程x 包括不连接的进程u 显示进程所有者的信息f 选项显示树进程 –foresto 属性 选项显示定制的信息 pid,cmd,%cpu,%mem ps xo pid,cmd,%cpu,ttyL 显示支持的属性列表k|–sort 属性 对属性排序,属性前…

    Linux笔记 2018-05-06
  • Blog Day 1:在Windows下搭建Linux学习环境

    By:Alvin Lin
    No:M30-43
    Date:2018-04-01

    -目录-
    第零部分:安装VMware Workstations 12 虚拟机软件程序(Windows平台)
    第一部分:创建虚拟机
    第二部分:安装CentOS6.9
    第三部分:安装CentOS7.4

    2018-04-01