Linux中的Grep,Egrep和Fgrep有什么区别?

在Unix系统上的一个着名的搜索工具,可以用于搜索任何东西,无论是一个文件,或一行或多行的文件是grep实用程序。它在功能上非常庞大,这可以归因于它支持的大量选项:使用字符串模式或reg-ex模式或基于perl的reg-ex等搜索。

在Linux中grep,egrep和fgrep之间的区别

由于其不同的功能,它有许多变种包括 grep,egrepExtended  GREP), 比fgrep( Fixed  grep)来 指派 ,( Process  GREP),rgrep( Recursive GREP)等,但这些变异体有轻微的差异,原来 的grep这使得他们受欢迎并被各种Linux程序员用于特定任务。 这还有待调查的主要的事情是什么是三个主要变量之间的差异,即 'grep“,”egrep '和grep,使得Linux用户选择一个或另一个版本按规定的 'fgrep“一样。

一些特殊的元字符grep

  1. + -相当于前一个字符的一次或多次出现。
  2. ? -这是指近1重复前一个字符。 这样的: a?将匹配'a''AA'。
  3. ( -交替表现的开始。
  4. ) -交替表达的结束。
  5. | -匹配或者通过分离式的'|' 像: “(a|b)cde”将匹配要么“ABCDE”“bbcde”。
  6. { -这个元字符表示的范围说明符的开始。 这样的: “a{2}”中的文件匹配“AA”即2倍。
  7. } -这个元字符表示范围说明结束。

grep,egrep和fgrep之间的区别

grep,egrep 比fgrep之间的一些主要差异可以如下突出显示。对于这组示例,我们假设正在执行操作的文件是:

Linux grep命令

Grep命令

grep或者 全局正则表达式打印是类Unix系统主要的搜索程序,它可以搜索文件的任何文件或文件列表,甚至任何命令的输出的任何类型的字符串。

建议阅读: Linux的grep命令的12实际的例子

它采用 的基本的正则表达式除了正常的字符串作为搜索模式。 在基本正则表达式(BRE),元字符,如: '{','}' '(',')''|' '+' '?'失去其意义,被视为普通字符字符串,如果它们被视为特殊字符,则需要进行转义。

推荐阅读: 11提前'grep'可以在字符类和括号表达式命令

此外,grep使用Boyer-Moore算法快速搜索任何字符串或正则表达式。
$ grep -C 0 '(f|g)ile' check_file
$ grep -C 0 '\(f\|g\)ile' check_file

Linux grep命令示例

喜欢这里,当命令没有逃脱运行 '(' ')''|'然后搜索整个字符串即 “(f|g)ile”的文件中。 但是,当特殊字符了逃脱,然后,而不是把它们当作字符串的一部分,grep的对待他们的元字符和搜索词 “file”“gile”的文件中。

Egrep命令

EGREP或者 grep-E是grep或者扩展的grep的另一个版本。这个版本的grep是高效和快速的,当它涉及到搜索正则表达式模式,因为它对待元字符,因为不替换为字符串,如grep,因此你摆脱它们的负担逃避他们在grep。它使用ERE或扩展正则表达式集。 在egrep的情况下,即使你不转义元字符,它会将它们视为特殊字符,并替换它们的特殊意义,而不是将它们视为字符串的一部分。
$ egrep -C 0 '(f|g)ile' check_file
$ egrep -C 0 '\(f\|g\)ile' check_file

Linux egrep命令示例

喜欢这里 ,egrep的搜索 “file”字符串时的元字符都没有逃脱,因为它会通过这些字符的意思意思。 但是,当这些字符了逃脱,然后egrep的对待他们作为字符串的一部分,并寻找完整的字符串 “(f|g)ile”的文件中。

fgrep命令

fgrep一样固定grep或者 grep的-F是grep的是在快速搜索时涉及到搜索整个字符串,而不是正则表达式,因为它不承认正则表达式,无论任何元字符的另一个版本。对于搜索任何直接字符串,这是应该选择的grep的版本。 Fgrep搜索完整的字符串,甚至不识别特殊字符作为正则表达式的一部分,即使转义或未转义。
$ fgrep -C 0 '(f|g)ile' check_file
$ fgrep -C 0 '\(f\|g\)ile' check_file

Linux fgrep命令示例

就像,当元字符都没有逃过,比fgrep搜索的完整字符串 “(f|g)ile”的文件中,当元字符进行转义,则比fgrep命令搜索 “\(f\|g\)ile”的所有字符是在文件中。 我们已经介绍了一些grep命令的实际例子,你可以在这里阅读它们,如果你想在Linux中获得更多的grep命令。

了解12 Linux的实用示例grep命令

结论

以上强调是 'grep','egrep ''fgrep'之间的差别。除了使用的正则表达式集合和执行速度的差异外,rest命令行参数对于grep的所有三个版本保持相同,甚至代替“egrep”或“fgrep”,“grep -E”或“grep- F“。 如果您发现这三个版本的grep之间的任何其他差异,请在您的评论中提及它们。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏