码迷,mamicode.com
首页 > 系统相关 > 详细

LINUX_grep及正则表达式

时间:2015-08-31 15:25:53      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:正则表达式   linux   字符串   

LINUX-基础-grep及正则表达式

文本查找命令:

grep,egrep,fgerp


grep:根据模式搜索文本,并将符合模式的文本行显示出来

Pattern:文本字符和正则表达式的元字符组合而成的匹配条件


grep [option] PATTERN [FILE...]

技术分享

上图为查找某个文件中包含root字符串的内容


grep的参数

-i:表示忽略大小写

技术分享

上图中忽略了h字母的大小写


--color:匹配到的选项用高亮进行标注显示

技术分享


-v:反向查找,被匹配到的行不显示,没有匹配到的行则显示

技术分享


-o:只显示被匹配到的字符串,每一个串显示一行

技术分享


-w:绝对匹配

技术分享

@@@@@@@@@@@

下面为通配符中的定义:

*:任意长度的任意字符

?:任意单个字符

[] :指定范围内

[^]:指定范围外

这些定义在元字符中有了改变,注意区分

@@@@@@@@@@@


正则表达式:regular expression


元字符:

.:任意单个字符

技术分享

上图表示在r和t之间任意两个单字符,所有途中的r/ft也匹配到了。

[]:匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

技术分享

上面的字符集合分别对应:数字 小写字母 大写字母 标点符号 空白字符 所有字母 所有数字和字符,上面这些引用的时候还需要在加[]进行使用,两个[]

字符个数

技术分享

*:匹配其前面的字符任意次

比如上图所示,a*b的意思为b前面存在任意个数的a的情况(而不是a和b之间可以有任意字符,a和b之间可以有任何字符是通配符的表示方式,不是元字符的表示方式),也就是能够匹配前面0个a,b;前面1个a,ab;前面2个a,aab;等形式,所以除了第一个a和最后三个之外,其他的都能够匹配到。

技术分享

技术分享技术分享

全部红色的才是匹配成功的


.* :表示任意长度的任意字符,贪婪模式,尽可能长的去匹配

技术分享

上图的a.*b表示a开头,b结束,中间任意字符

技术分享

技术分享

技术分享

无法匹配到ssaddb


可以理解为*前面第二位和后面的值是定死的,必须存在,而*前面第一位的字符可以是任意个数,可以为0个。

\?:匹配其前面的字符1次或0次

技术分享

aab不能被完全匹配


\{m,n\}:匹配其前面的字符至少m次,之多n次

技术分享

\{1,\}:表示至少一次,最多不限

技术分享

上图表示a和b之间可以出现至少1个至多3个字符


位置锚定:

^:锚定行首,此字符后面的任意内容必须出现在行首

技术分享


$:锚定行尾。此字符前面的任意内容必须出现在行尾

技术分享


^$:空白行

技术分享


^#$:表示匹配以#开头,中间为空内容的行

技术分享

技术分享


上图表示匹配以一个空白字符一个数字结尾的内容


\<或者\b:锚定词首,其后面的任意字符必须作为单词首部出现

技术分享


\>或者\b:锚定词尾,其前面的任意字符必须作为单词尾部出现

技术分享

.不算做单词一部分的尾部


\<root\>:精确匹配root单词

技术分享


分组:

\(\)

        \(ab\)*:这样表示ab可以出现0次或任意次,后向引用

技术分享

技术分享






本文出自 “IT_Landscape” 博客,请务必保留此出处http://huangyisan.blog.51cto.com/6925110/1690105

LINUX_grep及正则表达式

标签:正则表达式   linux   字符串   

原文地址:http://huangyisan.blog.51cto.com/6925110/1690105

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!