grep 过滤器在文件中搜索特定的字符模式并显示包含该模式的所有行。 fgrep 过滤器在一个或多个文件中搜索固定字符串。
grep 命令的语法:
grep [options] pattern [files]
fgrep 命令的语法:
fgrep [options] pattern [files]
这两个命令之间的主要区别是:
- 他们使用的字符串匹配算法。
- fgrep 总是使用最差 O(m+n) 复杂度的Aho-Corasick 算法。
- grep 命令始终使用具有最坏情况 O(mn) 复杂度的 Commentz-Walter 算法的修改版本。
- fgrep 命令将 PATTERN 解释为由换行符分隔的固定字符串列表。但是 grep 总是被解释为正则表达式。
两个命令之间的相似性
考虑以下名为para2 的文件
Hi, are you using geeksforgeeks for learning computer science concepts.
Geeksforgeeks is best for learning.
考虑下面的话:
are
using
geeksforgeeks
learning
concepts
使用 grep 命令:
$grep -f word para
输出:
Hi, are you using geeksforgeeks for learning computer science concepts.
Geeksforgeeks is best for learning.
使用 fgrep 命令:
$fgrep -f word para
输出:
Hi, are you using geeksforgeeks for learning computer science concepts.
Geeksforgeeks is best for learning.
两个命令的区别
考虑以下文件:
Hi, @re you usin.g geeks*forgeeks for learni\ng computer science con/cepts.
Geeks*forgeeks is best for learni\ng.
考虑下面的话:
@re
usin.g
geeks*forgeeks
learni\ng
con/cepts
使用 grep 命令:
grep -f word para
输出:
Hi, @re you usin.g geeks*forgeeks for learni\ng computer science con/cepts.
使用 fgrep 命令:
fgrep -f word para
输出:
Hi, @re you usin.g geeks*forgeeks for learni\ng computer science con/cepts.
Geeks*forgeeks is best for learni\ng.