Linux命令之在文件中查找符合指定条件的字符串egrep

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令之在文件中查找符合指定条件的字符串egrep相关的知识,希望对你有一定的参考价值。

概述

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 "hel2" test.txt

以上是关于Linux命令之在文件中查找符合指定条件的字符串egrep的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令之查找文件中符合条件的字符串fgrep

《Linux学习并不难》Linux常用操作命令:find命令查找符合条件的文件

Linux查找字符串命令grep(转)

Linux字符串搜索命令

Linux grep命令

Linux grep 命令