Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Shell > 正文

Shell语言八 扩展正则表达式和egrep、fgrep命令

时间:2014-05-31 00:27 来源:未知 作者:www.51ou.com 阅读:

egrep命令等同于 grep命令加上 -E选项,它支持扩展的正则表达式。

   扩展正则表达式和基本正则表达式类似,不同之处在于增加了一些新功能,部分元字符的用法也略有不同:

       .:任意单个字符

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

       [^]:取反

       *:匹配其前的字符0次、1次或多次

       ?:0次或1次

       {m,n}:至少m次,至多n次

       \<:词首锚定

       \>:词尾锚定

       ^:行首锚定

       $:行尾锚定

———————————上述部分和基本正则表达式一致————————

+:匹配其前的字符至少一次,等同于\{1,\}

wKiom1Nros6jdj61AAIcxVOjysc257.jpg

注意:使用grep -E 或egrep时,+前面不能有\,但使用grep时,需要带上\,且基本正则表达式不一定支持+

wKiom1NroveSw0FMAAE6o7kArJ8464.jpg

 

|:或者,如a|b

如查找 /proc/meminfo 文件中含有 s或S的行:

# grep -E “s|S” /proc/meminfo

# egrep “s|S” /proc/meminfo

wKioL1NrovOTutRDAANuO3oYxZc376.jpg

():分组,支持引用 \1,\2, 注意小括号前面不需要再加\进行转义了

^锚定行首符号若用在上述例子中会导致歧义

# egrep “^s|S” /proc/meminfo      // 这里不表示查找以s或S开头的行,

// 而是表示查找以s开头,或者是查找含有S的行

wKiom1Nro0GRdQO2AAEeFu7Wfkg940.jpg

若要用^锚定行首,来查找以s或S开头的行,可以使用()进行分组:

# egrep “^(s|S)” /proc/meminfo

wKioL1NroyWg1005AAC-Q8iym7U255.jpg

再举一个例子:

# egrep “c|Cat” egrep.txt// 不表示查找含有cat或Cat,而是查找含有c或Cat

# egrep “(c|C)at” egrep.txt

 

wKiom1Nro2HxKcL1AADVWE8gTcg030.jpg

 

fgrep命令也是grep命令的一种扩展形式,它不进行模式匹配,所有的元字符都当做普通字符来用,因此搜索速度非常快。

wKioL1Nro17QDSmXAAF0NnEBQHc556.jpg

 

本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1408652

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Shell语言八 扩展正则表达式和egrep、fgrep命令》技术文章,《Shell语言八 扩展正则表达式和egrep、fgrep命令》详细使用和说明,有时《Shell语言八 扩展正则表达式和egrep、fgrep命令》可能不完善、敬请谅解!如果《Shell语言八 扩展正则表达式和egrep、fgrep命令》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(1)
100%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片