概述
egrep
命令是在文件中查找符合指定匹配模式的字符串。该命令与 grep -E
类似,该命令更多用于查找符合指定正则表达式的字符串。
该命令比 grep
更丰富,如:
grep
不支持?
与+
,但egrep
支持。grep
不支持a|b
或(abc|xyz)
,但egrep
支持。grep
在处理{n,m}
时需要使用\{
和\}
进行转义处理,但egrep
不需要。
注:如果涉及正则表达式的匹配使用
egrep
命令更方便,而非grep -E
。
语法
该命令的语法如下:
egrep [选项] 指定匹配模式 文件名
该命令支持的选项有:
选项 | 说明 |
---|---|
-i | 搜索时,忽略大小写 |
-c | 只输出匹配行的数量 |
-l | 只列出符合匹配的文件名,不列出具体的匹配行 |
-n | 列出所有的匹配行,显示行号 |
-h | 查询多文件时不显示文件名 |
-s | 不显示不存在、没有匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
-w | 匹配整词 |
-x | 匹配整行 |
-r | 递归搜索 |
-q | 禁止输出任何结果,已退出状态表示搜索是否成功 |
-b | 打印匹配行距文件头部的偏移量,以字节为单位 |
-o | 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 |
注:由于该命令效果与
grep
类似,所以不多做说明,通常使用该命令匹配正则表达式。关于grep
命令可以参考:Linux命令之查找字符串grep。
使用
匹配正则表达式
测试使用的 test.txt
文件的内容如下:
hello c++
{hello} world
hello html5
hello css
he11o class
示例 1:
# `grep` 不支持 `?` 与 `+`,但 `egrep` 支持。
# grep 中把 '+' 字符解析成了普通的加号字符
grep "c.+" test.txt
# egrep 中把 '+" 解析成了前一个字符至少出现一次
egrep "c.+" test.txt
示例2:
# `grep` 不支持 `a|b` 或 `(abc|xyz)`,但 `egrep` 支持。
# grep 命令不能正确解析 (ll|11) 中表示的或关系
grep "he(ll|11)" test.txt
# egrep 命令不能正确解析 (ll|11) 中表示的或关系
egrep "he(ll|11)" test.txt
示例3:
# `grep` 在处理 `{n,m}` 时需要使用 `\{` 和 `\}` 进行转义处理,但 `egrep` 不需要。
# grep 命令中需要转义
grep "hel\{2\}" test.txt
# egrep 命令中不需要转义
egrep "hel{2}" test.txt