标签:linux
正则表达式(REGEXP:Regular Expression)
正则表达式分为两类:
1,基本的正则表达式。Basic REGEXP
2,扩展的正则表达式。Extened REGEXP
基本的正则表达式:
字符匹配
. 匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
次数匹配
* 表示其前的字符匹配任意次
\? 表示其前的字符匹配0或者1次
\{m,n\} 表示匹配次数至少m次,至多n次,n可以省略表示没有匹配次数的上限
.* 表示匹配任意长度的任意字符
锚定:锚定的是单个单词
^ 锚定行首
$ 锚定行尾
\<,\b 锚定单词首部
\>,\b 锚定单词尾部
\(\) 用作后向引用->\1,\2,\3,...
grep命令:使用基本正则表达式定义的模式来过滤文本的命令
格式:grep [option] Pattern file...
常用option:
-i:忽略匹配到的字符的大小写
-v:反向过滤
-o:只显示匹配到的字符串,而不是整行都显示
--color:显示匹配到的文本的颜色
-E:使用扩展的正则表达式
-A(After) #:当某一行被grep命令匹配到之后,不但显示这一行的内容,这一行之后的#行也会被显示出来
-B(Before) #:当某一行被grep命令匹配到之后,不但显示这一行的内容,这一行之前的#行也会被显示出来
-C(Context:上下文) #:当某一行被grep命令匹配到之后,不但是显示出这一行的内容,这一行之前和之后的#行都会被显示出来
默认情况下,正则表达式工作在贪婪模式下
扩展的正则表达式
字符匹配
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
次数匹配
* 匹配其前的字符任意次
? 匹配其前的字符0次或者1次
+ 匹配其前的字符至少一次 = \{1,\}
举例:grep --color -E ‘[[:space:]]+‘ ... 表示过滤出文本中,至少以一个空白字符开头的行
{m,n} 表示匹配次数至少m次,至多n次,扩展正则表达式的花括号不需要加反斜线
位置锚定
^ 锚定行首
$ 锚定行尾
\< 锚定单词首部
>\ 锚定单词尾部
分组
():分组->\1,\2,\3,...
或者|是扩展正则表达式中的特殊字符
|:or
举例:
C|cat表示的是C或cat
如果想要实现Cat或cat的效果的话,得使用分组
‘(C|c)at‘即可实现
egrep = grep -E 扩展的正则表达式
举例:取出文件中1-255的整数
egrep --color ‘\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b‘ ...
\. \是转译符,转译符的作用是让元字符表示它本身的意义,而不是元字符的意义,它就表示一个点
egrep --color ‘(\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b){#}...‘
表示的是将前面()中的内容重复执行{}中的#次
IP地址:
ipv4->
有五类地址,分别为A类,B类,C类,D类,E类,对我们有用的只有ABC三类,剩余两类是用来做研究使用的
A类:IP的第一段从1-127
B类:IP的第一段从127-191
C类:IP的第一段从192-223
grep命令有三个,除了grep、egrep之外还有一个fgrep命令
grep默认情况下只支持基本正则表达式的命令
egrep是支持扩展正则表达式的命令
fgrep = fast grep 快速grep
grep做模式匹配去搜索文本的时候会浪费大量的CPU时钟周期,而当你使用fgrep的时候,模式中的任何字符都会被当做字符本身去匹配,fgrep不支持正则表达式,所以它不去搜索正则表达式,所以速度很快
本文出自 “菜鸟的技术文档” 博客,请务必保留此出处http://zhubo.blog.51cto.com/11395641/1827128
标签:linux
原文地址:http://zhubo.blog.51cto.com/11395641/1827128