文本查找命令:
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
原文地址:http://huangyisan.blog.51cto.com/6925110/1690105