首页 > 代码库 > 8_Shell语言———扩展正则表达式和egrep、fgrep命令
8_Shell语言———扩展正则表达式和egrep、fgrep命令
egrep命令等同于 grep命令加上 -E选项,它支持扩展的正则表达式。
扩展正则表达式和基本正则表达式类似,不同之处在于增加了一些新功能,部分元字符的用法也略有不同:
.:任意单个字符
[]:指定范围内的任意单个字符
[^]:取反
*:匹配其前的字符0次、1次或多次
?:0次或1次
{m,n}:至少m次,至多n次
\<:词首锚定
\>:词尾锚定
^:行首锚定
$:行尾锚定
———————————上述部分和基本正则表达式一致————————
+:匹配其前的字符至少一次,等同于\{1,\}
注意:使用grep -E 或egrep时,+前面不能有\,但使用grep时,需要带上\,且基本正则表达式不一定支持+
|:或者,如a|b
如查找 /proc/meminfo 文件中含有 s或S的行:
# grep -E “s|S” /proc/meminfo
# egrep “s|S” /proc/meminfo
():分组,支持引用 \1,\2, 注意小括号前面不需要再加\进行转义了
^锚定行首符号若用在上述例子中会导致歧义
# egrep “^s|S” /proc/meminfo // 这里不表示查找以s或S开头的行,
// 而是表示查找以s开头,或者是查找含有S的行
若要用^锚定行首,来查找以s或S开头的行,可以使用()进行分组:
# egrep “^(s|S)” /proc/meminfo
再举一个例子:
# egrep “c|Cat” egrep.txt// 不表示查找含有cat或Cat,而是查找含有c或Cat
# egrep “(c|C)at” egrep.txt
fgrep命令也是grep命令的一种扩展形式,它不进行模式匹配,所有的元字符都当做普通字符来用,因此搜索速度非常快。
本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1408652