fgrep
fgrep 会对文件搜索某个字符串,并打印包含这个字符串的所有行的内容。与 grep 不同的是,fgrep 搜索的是一个字符串,而不是可以匹配某个表达式的一种模式。fgrep 可以看作是 grep 在以下方面进行了增强:
假设我们希望从前面的 memo 文件中提取全部由大写字母组成的名字。为了查找 “STEPHEN” 和 “BRIAN”,我们需要执行两个单独的 grep 命令,如下所示:
|
使用 fgrep,只需要一个命令就可以实现相同的任务:
|
注意在这两项之间需要使用回车符号。如果没有这个回车符号,搜索就变成了查找一行中的 “STEPHEN BRIAN”。有了这个回车符号之后,它就会查找 “STEPHEN” 的匹配项,以及匹配 “BRIAN” 的项。
还要注意在目标文本两侧必须要放上引号。这样可以将文本与文件名区分开来。
除了在命令行上指定搜索项之外,我们也可以将它们放到一个文件中,并使用这个文件的内容来搜索其他文件。-f 选项让我们可以指定一个包含搜索项的主文件,其中可以列出经常搜索的内容。
举例来说,我们可以想像一个名为 “search_items” 的文件,其中包含了我们希望搜索的两项内容:
|
下面的命令在前面的 memo 文件中搜索 “STEPHEN” 和 “BRIAN”:
|
egrep
egrep 是 grep 的一个功能更加强大的版本,它让我们可以一次搜索多个对象。要搜索的对象是使用回车符(与 fgrep 一样)或管道符(|)来分隔的。
|
上面这两个命令都可以完成相同的工作。
除了搜索多个目标的功能之外,egrep 还提供了重复搜索和分组搜索的功能:
? 查找问号前面字符的零次匹配或一次匹配。
+ 查找加号前面字符的一次或多次匹配。
( ) 表示一个分组。 例如,假设您不记得 Brian 的姓是 “Lara” 还是 “Laras”。
|
这次搜索会输出同时匹配 “LARA” 和 “LARAS” 的项。下面的搜索稍微有些不同:
|
它可以与 “STEPHEN”、“STEPHENN”、“STEPHENNN” 等匹配。
如果您正在查找一个单词加上它的一个派生词,可以在圆括号中包含派生词的标志字符。
|
这会查找可以匹配 “electrons” 的项和可以匹配 “electronics” 的项。
总结一下:
+ 号后面的正则表达式可以匹配这个正则表达式的一次或多次出现。? 号后面的正则表达式可以匹配这个正则表达式的零次或一次出现。| 符号或回车符分隔开的正则表达式会返回可以与任意一个表达式匹配的字符串。( ) 中进行分组。-c、-f、-i、-l、-n 和 -v。 grep 工具:一个真实的例子
grep 系列工具可以用于任何文本格式的系统文件,以便查找某行中的匹配项。例如,要在 /etc/passwd 文件中查找用户 “root” 的项,可以使用下面的命令:
|
由于 grep 会查找这个文件中的某个匹配项,因此这个命令会查找到 “root” 和 “operator” 这两项。如果我们希望只查找用户名为 “root” 的项,可以将这个命令修改成下面的样子:
|
| 基于Linux操作系统实现的传真系统 | 12-09 | |
| Linux操作系统上最好的10款开源游 | 11-20 | |
| Linux 系统中的超级权限的控制 | 11-09 | |
| Linux操作系统下的常见系统资源共 | 11-07 | |
| Linux下的中文显示和支持常见问题 | 10-23 | |
| 嵌入式Linux系统的动态电源管理技 | 10-13 | |
| 从硬盘安装Linux操作系统的方法步 | 10-12 | |
| 深入浅出分析Linux设备驱动程序中 | 10-10 | |
| 使用kgdb调试linux内核及内核模块 | 10-04 | |
| 使用Linux 文本工具简化数据的提 | 10-04 | |
| 如何在Linux操作系统下检测内存泄 | 09-27 | |
| Linux内核编译菜单中相关选项的意 | 09-20 | |