Unix Egrep和Fgrep的区别
Egrep和Fgrep是两个不同的命令行工具,用于搜索文件中的文本模式。这两个命令经常用于基于Unix的操作系统,如Linux和macOS。
- 普通grep工具的一个增强版本被称为 “扩展grep”。它支持使用扩展的正则表达式,这使得搜索比标准grep的搜索更加复杂。
-
fgrep是 “固定grep “的缩写,它被设计用来搜索固定的字符串而不是模式。正因为如此,fgrep比grep和egrep更快,但也更难定制。
我们将看看egrep和fgrep之间的主要区别,其中包括能力、性能和使用案例。阅读这篇文章,了解更多关于Egrep和Fgrep的信息,以及它们之间的区别。
什么是Egrep
一个叫做Egrep(Extended Global Regular Expression Print)的命令行被用来搜索一个或多个文件中的文本模式。它与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是用来搜索一个或多个文件中的文本模式。它是Extended Global Regular Expression Print的缩写。 | 与grep工具不同,fgrep用于搜索复杂的正则表达式,它更擅长于搜索固定的字符串。Fgrep代表快速全局正则表达式打印。 |
快速性 | Egrep的快速性较低 | Fgrep的快速性很高 |
示例 | $ egrep -E “5 | [[:space:]]*5″./file.txt. |
字符串的模式 | 它分析的是编译了各种模式的字符串或列表 | 它不分析收集了几种模式的字符串或列表。 |
表达式 | Egrep命令使用扩展的正则表达式。 | 非扩展的正则表达式由Fgrep命令使用。 |
解释 | Egrep通过标准输入接收它的输入,这是通过管道输送文件内容来完成的。 | 一个必须在命令行参数中给出的文件作为Fgrep的输入源。 |
结论
总之,在egrep和fgrep之间的决定取决于手头任务的特殊要求。如果你需要搜索复杂的模式,egrep是很好的选择,而如果你需要搜索固定的字符串,fgrep可能会更快。