1、简介
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配到的行打印出来。grep全称是Globally search for a Regular Expression and print out the line,表示全局搜索正则表达式并打印匹配结果的意思。Linux下所有用户都可以使用。
2、格式
grep [option] "pattern" FILE
3、常用选项
-v:显示除匹配结果以外的所有内容
没有使用-v选项的效果:
使用-v选项后的效果:
-i:忽略大小写
-o:只显示匹配到的内容
没有使用-o选项的效果:
使用-o选项后的效果:
--color=auto : 表示使用颜色填充匹配到的内容,使其高亮显示
-A n : n为数字,表示显示匹配到内容及其后面的n行
-B n : n为数字,表示显示匹配到内容及其前面的n行
-C n : n为数字,表示显示匹配到内容及其前后的n行
正常显示效果:
-A 1,效果:
-B 1,效果:
-C 1,效果:
-E:等同于egrep,使用扩展的正则表达式
4、基本正则表达式元字符
^ : 表示锚定行首,格式:
‘^pattern’
& : 表示锚定行尾,格式:
'pattern$'
特殊用法: ^$,表示匹配空白行:
. : 表示匹配任意单个字符
* : 表示匹配之前的字符任意次
.* : 表示匹配任意长度的任意字符
[] : 表示匹配范围内任意单个内容
[^] : 表示匹配范围外任意单个内容
常用范围表示格式:
[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次
.\? : 表示匹配任意字符0次或1次
\{m,n\} : 表示匹配之前的字符至少m次,最多n次
\{0,n\} : 表示匹配之前的字符最多n次
\{m,\} : 表示匹配之前的字符至少m次
\{m\} : 表示匹配之前的字符m次
\< : 表示单词词首锚定,等同\b
\> : 表示单词词尾锚定,等同\b
\<word\> : 表示锚定单词,等同\bword\b
\(pattern\) : 表示分组
\(pattern\).*\1 : 表示引用前面分组内容
5、egrep和grep的区别地方:
增加的元字符
+ : 表示匹配前面的字符至少一次
| : 表示匹配符号两边的任意一边,比如a|b,表示匹配a或者b
注意,| 左右带括号和不带括号的区别
变化的元字符
? : 等同于grep中的\?,在egrep中不需要反义
() : 等同于grep中的\(\),在egrep中不需要反义
{} : 等同于grep中的\{\},在egrep中不需要反义
以上就是grep和egrep的简单用法。