在Unix系统上的一个着名的搜索工具,可以用于搜索任何东西,无论是一个文件,或一行或多行的文件是grep实用程序。它在功能上非常庞大,这可以归因于它支持的大量选项:使用字符串模式或reg-ex模式或基于perl的reg-ex等搜索。
在Linux中grep,egrep和fgrep之间的区别
由于其不同的功能,它有许多变种包括grep,egrep的 (ExtendedGREP), 比fgrep( Fixedgrep)来 指派 ,(ProcessGREP),rgrep( Recursive GREP)等,但这些变异体有轻微的差异,原来的grep这使得他们受欢迎并被各种Linux程序员用于特定任务。
这还有待调查的主要的事情是什么是三个主要变量之间的差异,即'grep“,”egrep'和grep,使得Linux用户选择一个或另一个版本按规定的'fgrep“一样。
一些特殊的元字符grep
+ -相当于前一个字符的一次或多次出现。
? -这是指近1重复前一个字符。 这样的: a?将匹配'a'或'AA'。
( -交替表现的开始。
) -交替表达的结束。
| -匹配或者通过分离式的'|' 像: “(a|b)cde”将匹配要么“ABCDE”或“bbcde”。
{ -这个元字符表示的范围说明符的开始。 这样的: “a{2}”中的文件匹配“AA”即2倍。
} -这个元字符表示范围说明结束。
grep,egrep和fgrep之间的区别
的grep,egrep 的和比fgrep之间的一些主要差异可以如下突出显示。对于这组示例,我们假设正在执行操作的文件是:
Linux grep命令
Grep命令
grep或者全局正则表达式打印是类Unix系统主要的搜索程序,它可以搜索文件的任何文件或文件列表,甚至任何命令的输出的任何类型的字符串。
的基本的正则表达式除了正常的字符串作为搜索模式。 在基本正则表达式(BRE),元字符,如: '{','}' '(',')' , '|' '+' '?'失去其意义,被视为普通字符字符串,如果它们被视为特殊字符,则需要进行转义。
$ 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命令。
结论
以上强调是'grep','egrep'和'fgrep'之间的差别。除了使用的正则表达式集合和执行速度的差异外,rest命令行参数对于grep的所有三个版本保持相同,甚至代替“egrep”或“fgrep”,“grep -E”或“grep- F“。
如果您发现这三个版本的grep之间的任何其他差异,请在您的评论中提及它们。