1、简介

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配到的行打印出来。grep全称是Globally search for a Regular Expression and  print  out the line,表示全局搜索正则表达式并打印匹配结果的意思。Linux下所有用户都可以使用。


2、格式


grep [option] "pattern" FILE


3、常用选项


-v:显示除匹配结果以外的所有内容

没有使用-v选项的效果:

linux下grep、egrep及正则表示式的常用使用方法_正则表达式

使用-v选项后的效果:

linux下grep、egrep及正则表示式的常用使用方法_egrep_02

-i:忽略大小写

linux下grep、egrep及正则表示式的常用使用方法_linux_03

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

没有使用-o选项的效果:

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_04

使用-o选项后的效果:

linux下grep、egrep及正则表示式的常用使用方法_egrep_05

--color=auto : 表示使用颜色填充匹配到的内容,使其高亮显示

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_06

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

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

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

正常显示效果:

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_07

-A 1,效果:

linux下grep、egrep及正则表示式的常用使用方法_linux_08

-B 1,效果:

linux下grep、egrep及正则表示式的常用使用方法_linux_09

-C 1,效果:

linux下grep、egrep及正则表示式的常用使用方法_linux_10

-E:等同于egrep,使用扩展的正则表达式


4、基本正则表达式元字符


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

‘^pattern’

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_11

& : 表示锚定行尾,格式:

'pattern$'

linux下grep、egrep及正则表示式的常用使用方法_linux_12

特殊用法: ^$,表示匹配空白行:


. : 表示匹配任意单个字符

linux下grep、egrep及正则表示式的常用使用方法_grep_13

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

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

linux下grep、egrep及正则表示式的常用使用方法_linux_14

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

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

   

常用范围表示格式:

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

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

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

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

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

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

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

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

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

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

linux下grep、egrep及正则表示式的常用使用方法_egrep_15

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

   .\? : 表示匹配任意字符0次或1次

linux下grep、egrep及正则表示式的常用使用方法_linux_16

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

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

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

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

linux下grep、egrep及正则表示式的常用使用方法_grep_17

\< : 表示单词词首锚定,等同\b

\> : 表示单词词尾锚定,等同\b

\<word\> : 表示锚定单词,等同\bword\b

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_18


\(pattern\) : 表示分组

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

linux下grep、egrep及正则表示式的常用使用方法_grep_19

5、egrep和grep的区别地方:

增加的元字符

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

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_20

| : 表示匹配符号两边的任意一边,比如a|b,表示匹配a或者b

linux下grep、egrep及正则表示式的常用使用方法_egrep_21

注意,| 左右带括号和不带括号的区别


变化的元字符

? : 等同于grep中的\?,在egrep中不需要反义

() : 等同于grep中的\(\),在egrep中不需要反义

{} : 等同于grep中的\{\},在egrep中不需要反义

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_22

linux下grep、egrep及正则表示式的常用使用方法_正则表达式_23

linux下grep、egrep及正则表示式的常用使用方法_egrep_24

以上就是grep和egrep的简单用法。