概述

egrep 命令是在文件中查找符合指定匹配模式的字符串。该命令与 grep -E 类似,该命令更多用于查找符合指定正则表达式的字符串。

grep 结果赋给数组 grep指定字符串_bash

该命令比 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

grep 结果赋给数组 grep指定字符串_linux_02

示例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

grep 结果赋给数组 grep指定字符串_正则表达式_03

示例3:

# `grep` 在处理 `{n,m}` 时需要使用 `\{` 和 `\}` 进行转义处理,但 `egrep` 不需要。
# grep 命令中需要转义
grep "hel\{2\}" test.txt
# egrep 命令中不需要转义
egrep "hel{2}" test.txt

grep 结果赋给数组 grep指定字符串_linux_04