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 yiibai for learning computer science concepts. Yiibai.com is best for learning.
假设有一个名称为 word2
的文件,内容如下:
are using yiibai learning concepts
使用 grep
命令:
$grep -f word2 para2
输出内容如下:
Hi, are you using yiibai for learning computer science concepts.
Yiibai.com is best for learning.
使用 fgrep
命令:
$ fgrep -f word para
输出结果:
Hi, are you using yiibai for learning computer science concepts.
Yiibai.com is best for learning.
假设 word 文件的内容如下:
Hi, @re you usin.g yii*bai for learning computer science con/cepts. Yii*bai is best for learning.
para 文件的内容如下:
@re usin.g yii*bai learning con/cepts
使用 grep 命令:
$ grep -f word para
运行结果:
Hi, @re you usin.g yiibai for learning computer science *con/cepts.
使用 fgrep 命令:
$ fgrep -f word para
运行结果:
Hi, @re you usin.g yii*bai for learning computer science con/cepts.
Yiibai is best for *learning.
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264242.html