fgrep 命令
用途
为文件搜索文字字符串。
语法
弗格雷普 [ -] [ -我] [ -s] [ 乌] [ -] [ -w ] [ -x] [ -y ] [ [ -b] [ -n] | [ -c | -我 | -q ] ] [ -p 分隔符] {模式 | -e 模式 | -f 字符串文件} [文件 ...]
描述
fgrep 命令会搜索 File 参数指定的输入文件(在缺省情况下,为标准输入)中与模式匹配的行。 fgrep 命令会特地搜索 Pattern 参数,这些参数是固定的字符串。 如果在 File 参数中指定了多个文件,那么 fgrep 命令将显示包含匹配行的文件。
fgrep 命令于 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。 fgrep 命令使用快速的压缩算法。 $、*、[、|、(、) 和 \ 字符由 fgrep 命令按字面意思解释。 不会将这些字符解释为正则表达式的某些部分,但在 grep 和 egrep 命令中,会将它们解释为正则表达式的某些部分。 由于这些字符对 shell 具有特殊含义,因此必须将整个字符串括在单引号 ('...') 中。 如果未指定任何文件,那么 fgrep 命令将采用标准输入。 通常情况下,找到的每行都复制到标准输出中。 如果存在多个输入文件,那么会在找到的每行前面显示文件名。
标志
| 标志 | 描述 |
|---|---|
| -b | 在每行前面加上找到该行的块号码。 使用此标志有助于按照上下文查找磁盘块号码。 -b 标志不能用于标准输入或者管道输入。 |
| -c | 仅显示匹配行的计数。 |
| -e 模式 | 指定模式。 其作用相当于一个简单模式,但当该模式以 -(减号)开头时很有用。 |
| -f StringFile | 指定包含字符串的文件。 注意:要提高fgrep(或grep-F)命令在输入包含搜索模式的文件时的性能,请在运行fgrep命令前导出ENABLE_FGREP_AC环境变量。 例如,可运行以下命令来导出此环境变量:
|
| -h | 当处理多个文件时隐藏文件名。 |
| -i | 当进行比较时忽略字母的大小写情况。 |
| -l | 只列示包含匹配行的文件名(一次)。 文件名之间用换行符分隔。 |
| -n | 在每行之前加上该行在文件中的相对行号。 |
| -p 分隔符 | 显示包含匹配行的整个段落。 段落之间将使用 Separator 参数指定的段落分隔符加以分隔,这些分隔符的模式与搜索模式有着相同的格式。 包含段落分隔符的行将仅用作分隔符;它们不会包含在输出中。 缺省的段落分隔符是空白行。 |
| -q | 禁止所有写入到标准输出的操作,不管是否为匹配行。 如果选中输入行,以 0 状态退出。 |
| -s | 仅显示出错消息。 这对于检查状态很有用。 |
| -U | 导致输出不被缓存。 |
| -v | 显示除了与指定模式匹配的那些行之外的所有行。 |
| -w | 搜索字。 |
| -x | 显示匹配模式的行,要求无额外的字符。 |
| -y | 当进行比较时忽略字母的大小写情况。 |
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 找到匹配项。 |
| 第 1 年 | 未找到匹配项。 |
| > 1 | 发现语法错误,或者文件不可访问(即使找到了匹配项)。 |
示例
- 要搜索若干文件中的简单字符串,请输入:
fgrep strcpy *.c这将搜索字符串strcpy在当前目录中的所有文件中,名称以.c字符串。
- 要对与模式匹配的行数进行计数,请输入:
它显示以下项中的行数:pgm.c包含左花括号和右花括号。
如果在您的 C 程序中一行中没有包含多于一个 {(左括号)或者 }(右括号),并且括号正确匹配,那么这两个数字将是一样的。 如果这两个数字不一样,您可以将包含括号的行按照它们在文件中的位置顺序显示出来,使用以下命令:
egrep {\|} pgm.c - 要显示包含某个模式的文件的名称,请输入:fgrep -l strcpy *.c
它在当前目录中搜索以.c并显示包含以下内容的那些文件的名称:strcpy请指定有效字符串。
文件
| 文件 | 描述 |
|---|---|
| /usr/bin/fgrep | 包含 fgrep 命令。 |
| /bin/fgrep | fgrep 命令的符号链接。 |