设为首页 加入收藏

TOP

文本过滤之grep,egreo及fgrep 以及正则表达式
2014-11-23 21:36:10 来源: 作者: 【 】 浏览:16
Tags:文本 过滤 grep egreo fgrep 以及 正则 表达式

关于grep,egrep以及fgrep,是我们Linux服务器中常用的文本过滤工具。掌握好这三个工具并结合正则表达式,对我们日后的运维工作有很大的帮助。


1.grep,egrep,及fgrep区别。


三者的主要区别在于对正则表达式的支持不同。首先,grep支持的是标准正则表达式;而egrep及grep -e则支持的是扩展正则表达式;至于fgrep,是不支持正则表达式的,在本文也就不再赘述。但是其在速度方面,相对前面两者,就比较快了,在精确匹配是就很好用。


2.支持的常用选项


3.常用字符合集(注:可在正则表达式的字符匹配中结合[]或[^]使用)


4.标准正则表达式的元字符


(注:为了使效果更明显,已设置别名alias grep="grep --color=auto".所使用示例文件在文章最下方)


.:匹配任意单个字符


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


如上所示,[:alpha:]表示所有字母的集合,所以外边再加个[]就是所有小写字母其中的一个了。


所以在第一次匹配的v/ftp也就因为第二个不是字母而没有匹配到了.


[^]取反,也就是指定范围外的任意单个字符


如上图,[:alpha:]表示所有字母的集合,所以外边再加个[^]就是非所有小写字母其中的一个。


所以root就匹配不到,v/ftp就匹配到了.


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


\ :匹配其前字符零次或一次


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


\{m\}:匹配其前面的字符m


\{0,n\}:表示匹配其前面的字符至多n


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


^:锚定每行的起始位置


$:锚定每行的结束位置


\<:锚定词首


\>:锚定词尾 :不包含特殊字符组成的串叫单词


\b:等同于\<\>,在单词左边为锚定词首,为锚定词尾


^$:没有任何字符的空白行


\(\):可以将一串字符串引用起来,并可以结合次数匹配使用,也可以使用\n进行引用


\|:或者的意思


5.扩展正则表达式


关于扩展正则表达式的元字符大体上和标准正则表达式是一样的,只是在一些元字符使用时,不再需要使用\进行转义,只有在使用词首锚定(\<),词尾锚定(\>)以及分组的引用(\n)时转义,可以使模式更加简洁,可读性也会更强.同时也可以使用 + 表示匹配其前面的字符至少1次。


-----------------------------------华丽的分割线--------------------------------------


附:


上述示例使用文件内容


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Shell编程浅析 下一篇改善用户体验的 3 个 AngularJS ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: