谁能告诉我之间的技术差异grep
,egrep
以及fgrep
提供合适的例子吗?
什么时候需要使用grep
over egrep
,反之亦然?
从历史上看,这些开关是在单独的二进制文件中提供的。在某些非常老的Unix系统上,您会发现需要调用单独的二进制文件,但是在所有现代系统上,交换机是首选。grep的手册页上有关于此的详细信息。
至于它们的作用,-E
将grep切换到特殊模式,以便将表达式评估为ERE(扩展正则表达式),而不是其常规模式匹配。有关此语法的详细信息,请参见手册页。
-E, --extended-regexp
将PATTERN解释为扩展的正则表达式
该-F
开关切换的grep进入它接受匹配模式,但随后拆分该图案成每行一个搜索字符串并执行一个或任何字符串的搜索而不做任何特殊模式匹配不同的模式。
-F, --fixed-strings
将PATTERN解释为由换行符分隔的固定字符串列表,其中任何一个都将被匹配。
以下是一些示例方案:
您有一个文件,其中包含以纯文本形式显示的十个Unix用户名列表。您要搜索计算机上的组文件,以查看列出的十个用户中是否有任何特定的组:
grep -F -f user_list.txt /etc/group
-F
开关在此处提供帮助的原因是,模式文件中的用户名被解释为纯文本字符串。例如,点将被解释为点而不是通配符。
您想使用花哨的表达式进行搜索。例如,括号()
可以用来指示|
用作OR运算符的组。您可以使用-E
以下命令运行此搜索:
grep -E '^no(fork|group)' /etc/group
...返回以“ nofork”或“ nogroup”开头的行。如果没有-E
切换,您将不得不转义涉及的特殊字符,因为使用常规模式匹配,它们将仅搜索该确切模式。
grep '^no\(fork\|group\)' /etc/group
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句