egrep和fgrep的区别


egrep和fgrep是两种不同的命令行实用程序,用于在文件中搜索文本模式。这两个命令通常用于基于Unix的操作系统,例如Linux和macOS。

  • “扩展grep”(egrep)是普通grep工具的增强版本。它支持使用扩展正则表达式,这使得搜索比标准grep更复杂。

  • fgrep(代表“固定grep”)旨在搜索固定字符串而不是模式。因此,fgrep比grep和egrep更快,但可定制性也更低。

我们将探讨egrep和fgrep的主要区别,包括功能、性能和用例。阅读本文,了解更多关于egrep和fgrep的信息以及它们之间有何不同。

什么是egrep?

egrep(扩展全局正则表达式打印)是一个命令行工具,用于在一个或多个文件中搜索文本模式。它类似于grep实用程序,但包含一些额外的功能,使其更灵活和强大。

grep和egrep之间的一个主要区别是它们都使用“扩展正则表达式”,这是一种更复杂的正则表达式类型。这种语法允许更复杂的模式匹配,包括指定重复和匹配多个选项的能力。

egrep的使用场景包括:在一个大型文本文件集中搜索特定的单词或短语;搜索遵循特定模式的行;从日志文件中提取特定数据。

让我们来看一些egrep命令中常用的选项:

  • -i - 执行不区分大小写的搜索

  • -v - 搜索结果反转,仅返回不匹配模式的行

  • -w - 仅匹配整个单词

  • -c - 用于计算匹配模式的行数

  • -n - 在每一行之前包含行号

  • -E - 指示模式是扩展正则表达式

egrep是GNU grep实用程序系列的成员,可在大多数类Unix操作系统上使用,包括Linux和macOS。

什么是fgrep?

fgrep(快速全局正则表达式打印)是一个命令行工具,用于在一个或多个文件中搜索文本模式。与用于搜索复杂正则表达式的grep实用程序不同,它更擅长搜索固定字符串。

fgrep在一个或多个文件中搜索提供的字符串或字符串集的精确匹配。它不允许使用正则表达式中用于指定模式的特殊字符,例如.,*,^,.等等。

fgrep在搜索固定字符串时,尤其是在一次搜索多个字符串时,比grep更有效率和速度更快。这是使用fgrep的主要优势之一。因此,fgrep非常适合于在大型文本文件中搜索特定单词或短语等任务。

让我们来看一些fgrep命令中常用的选项:

  • -i - 执行不区分大小写的搜索

  • -v - 搜索结果反转,仅返回不匹配模式的行

  • -w - 仅匹配整个单词

  • -c - 用于计算匹配模式的行数

  • -n - 在每一行之前包含行号

fgrep是GNU grep实用程序系列的成员,可在大多数类Unix操作系统上使用,包括Linux和macOS。

egrep和fgrep的区别

下表重点突出了egrep和fgrep的主要区别:

特性

egrep

fgrep

定义

egrep用于在一个或多个文件中搜索文本模式。它代表扩展全局正则表达式打印。

与用于搜索复杂正则表达式的grep实用程序不同,fgrep更擅长搜索固定字符串。fgrep代表快速全局正则表达式打印。

速度

egrep速度较慢

fgrep速度较快

示例

$ egrep -E "5|[[:space:]]*5" ./file.txt

$ fgrep -F "5|[[:space:]]*5" ./file.txt

字符串模式

它分析编译了各种模式的字符串或列表

它不分析收集了多个模式的字符串或列表。

表达式

egrep命令使用扩展正则表达式

fgrep命令使用非扩展正则表达式

说明

egrep通过标准输入接收输入,这是通过将文件的內容通过管道传递给它来实现的。

fgrep的输入源是必须在命令行参数中给出的文件。

结论

总之,选择egrep还是fgrep取决于手头任务的具体需求。如果您需要搜索复杂的模式,egrep是更好的选择;如果您需要搜索固定字符串,fgrep可能更快。

更新于:2023年3月2日

6000+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告