正则表达式

  本人第一次写博文。由于最近刚好学到了正则表达式基本使用方法。整理了一下,以后用于回顾查找。

 

正则表达式基本说明:

 基本来说,正则表达式式一种用来描述一定数量文本的模式,正则表达式的简写为REGEX 全称Regular Express。

 

 首先正则表达式对于Linux运维工程师来说非常重要,这将伴随每一个运维工程师的职业生涯。说到正则表达式那么不得不说一下grep和egrep,grep全称是Globally search for a Regular Expression and print  out the line,表示全局搜索正则表达式并打印匹配结果的意思,好了现在让我们来一起揭开正则表达式的神秘面纱。

 

常用格式:

grep [option]  "pattern"  FILE

常用选项:

--color 表示匹配结果用高亮颜色显示

grep 正则分组 grep 正则匹配_grep 正则分组


-i : 表示不区分大小写

. : (小数点)表示任意匹配任意单个字符

grep 正则分组 grep 正则匹配_运维_02

-v:表示除显示结果以外的所有内容(上面为不加-v效果)

grep 正则分组 grep 正则匹配_运维_03

 

-o :表示只显示匹配到的内容

grep 正则分组 grep 正则匹配_grep 正则分组_04

*  :表示匹配之前的字符任意次

grep 正则分组 grep 正则匹配_锚定_05

.* :  表示匹配任意长度的任意字符

grep 正则分组 grep 正则匹配_操作系统_06

-A n:n为数字,显示匹配到的内容及其后面的n行

示例:

-A 1,如下图:

grep 正则分组 grep 正则匹配_运维_07

-B n :n为数字,显示匹配到的内容及其前面的n行

示例:

-B 1,如下图:

grep 正则分组 grep 正则匹配_运维_08

-C n:n为数字,显示匹配到的内容及其前后n行

示例:

-C 1,如下图:

 

grep 正则分组 grep 正则匹配_正则表达式_09

正则表达式元字符:

^ :表示锚定行首,格式:

 ‘^pattern’

grep 正则分组 grep 正则匹配_操作系统_10

$ :表示锚定行首,格式:

‘pattern$’

 

grep 正则分组 grep 正则匹配_grep 正则分组_11

注意:特殊用法,匹配空白行为‘^$’

[ ]:表示匹配范围内的任意字符

grep 正则分组 grep 正则匹配_grep 正则分组_12

[^] : 表示匹配范围外任意单个内容

grep 正则分组 grep 正则匹配_grep 正则分组_13

常用范围表示格式:

[0-9] : 表示所有数字等同于 [[:digit:]]

[a-z] : 表示所有小写字母等同于 [[:lower:]]

[A-Z] : 表示所有大写字母等同于 [[:upper:]]

[a-zA-Z] : 表示所有字母等同于 [[:alpha:]]

[a-zA-Z0-9] : 表示字母和数字等同于 [[:alnum:]]

[[:graph:]] : 表示非空字符(非空格、控制字符)

[[:cntrl:]] : 表示控制字符

[[:punct:]] : 表示标点符号

[[:print:]] : 表示非空字符(包含空格)

[[:space:]] : 表示空白字符

 

\? :表示匹配之前的字符0次或1次

grep 正则分组 grep 正则匹配_锚定_14

\{m,n\} :表示匹配之前的字符至少m次,最多n次

grep 正则分组 grep 正则匹配_运维_15

\{0,n\}:表示匹配之前的字符最多n次

grep 正则分组 grep 正则匹配_锚定_16

\{m,\} :表示匹配之前的字符至少n次

grep 正则分组 grep 正则匹配_运维_17

\{m\} :表示匹配之前的字符至少m次

grep 正则分组 grep 正则匹配_操作系统_18

\< :表示单词词首锚定,等同于\b的用法一样

\> :表示单词词尾锚定,等同于\b的用法一样

如:\<word\> :表示锚定单词,等同于\bword\b 个人觉得\b较简单哈哈

grep 正则分组 grep 正则匹配_grep 正则分组_19

分组与引用:

\(PATTERN\):表示将此PATTERN匹配到的字符当作一个不可侵犯的整体

\( PATTERN\).*\1 :表示引用前面分组的内容

grep 正则分组 grep 正则匹配_运维_20

egrep元字符:

+ :表示匹配前面的字符至少一次

grep 正则分组 grep 正则匹配_锚定_21

| :管道符在这里表示|符号两边任意一边

grep 正则分组 grep 正则匹配_grep 正则分组_22

( | ) :带括号的

grep 正则分组 grep 正则匹配_运维_23

?:等同于grep中的\?

grep 正则分组 grep 正则匹配_正则表达式_24

( ):等同于grep中的\(\)

grep 正则分组 grep 正则匹配_正则表达式_25

{ } :等同于grep中\{\}

grep 正则分组 grep 正则匹配_正则表达式_26

案例:

  1. 显示test.txt中不以cb为结尾的行

grep 正则分组 grep 正则匹配_操作系统_27

2.找出test文件中的三位或四位数

grep 正则分组 grep 正则匹配_grep 正则分组_28

3.找出/etc/grub2.cfg文件中,以至少一个空白字符开头,后面又跟了非空白字符的行; (最后显示内容较多,所以就截取部分)

grep 正则分组 grep 正则匹配_运维_29


4、找出"fdisk  -l“命令的结果中,包含以/dev/后跟sd或hd及一个小字母的行;

grep 正则分组 grep 正则匹配_锚定_30


转载于:https://blog.51cto.com/lailai900201/1750221