egrep 命令

用途

搜索文件获得模式。

语法

egrep [ -h ] [ -i ] [ -p[ Separator ]] [ -s ] [ -u ] [ -v ] [ -w ] [ -x ] [ -y ] [[[ -b ] [ -n ] | [ -c | -l | -q ]] {{ -ePattern | -fStringFile } ... | Pattern } [ File ... ]

描述

egrep 命令会在输入文件(缺省值为标准输入)中搜索与用 Pattern 参数指定的模式相匹配的行。 这些模式是 Ed 命令中的完整正则表达式 (\ (反斜杠) 和 \\ (双反斜杠) 除外)。 以下规则也应用于 egrep 命令:

  • 后跟 + (加号) 的正则表达式与一个或多个出现的正则表达式相匹配。
  • 后跟 a? 的正则表达式 (问号)会匹配零个或一个该正则表达式。
  • 由 | (竖线) 或换行符分隔的多个正则表达式与任何正则表达式相匹配的字符串相匹配。
  • 正则表达式可以括在 () 中 (括号) 表示分组。

换行符将不会被正则表达式匹配。

运算符的优先顺序是 [, ], *, ?, +, 合并, | 和换行符。

注: 埃格雷普 命令与带有 -E 标志的 格雷普 命令相同,但错误和使用情况消息不同,并且 -s 标志的功能也不同。

egrep 命令会显示包含该匹配行的文件,如果您指定了多于一个 File 参数的话。 对 shell 有特殊含义的字符 ($, *, [, |, ^, (, ), \ ) 出现在 Pattern 参数中时必须带双引号。 如果 Pattern 参数不是简单字符串,通常必须用单引号将整个模式括起来。 在表达式中,例如[a-z],减号表示根据当前整理顺序进行的。 整理顺序可以定义等价的类以供在字符范围中使用。 它使用了快速确定性的算法,有时需要外部空间。

注意:
  1. 每行限制在 2048 个字节。
  2. 段 (在 -p 标志下) 当前限制为长度为 5000 个字符。
  3. 不要对特殊文件运行 grep 命令,这样做可能产生不可预计的结果。
  4. 输入行不应包含空字符。
  5. 输入文件应该以换行符结束。
  6. 虽然可以同时指定若干标志,但有些标志会覆盖其他标志。 例如,如果同时指定 -l -n ,只有文件名写入到标准输出中。

标志

描述
-b 在每行前面加上找到该行的块号码。 使用此标志有助于按照上下文查找磁盘块号码。 -b 标志不能用于标准输入或者管道输入。
-c 仅显示匹配行的计数。
-e 模式 指定 模式。 这象一个简单的模式,但是它在模式以一个 -(减号)开始时很有用。
-f StringFile 指定包含字符串的文件。
-h 当处理多个文件时隐藏文件名。
-一 当进行比较时忽略字母的大小写。
-l 只列示包含匹配行的文件名(一次)。 文件名之间用换行符加以分隔。 如果搜索标准输入,那么路径名为"(StandardInput)"返回。
-n 在每行之前加上该行在文件中的相对行号。
-p[分隔符] 显示包含匹配行的整个段落。 段落之间将使用 Separator 参数指定的段落分隔符加以分隔,这些分隔符的模式与搜索模式有着相同的格式。 包含段落分隔符的行将仅用作分隔符;它们不会包含在输出中。 缺省的段落分隔符是空白行。
-q 禁止所有的输出到标准输出,不管匹配行。 如果选中输入行,以 0 状态退出。
-s 仅显示出错消息。 这在检查状态时很有用。
-U 导致输出不被缓存。
-v 显示除了匹配特定模式的行以外的所有行。
-w 执行单词搜索。
-x 显示与指定模式精确匹配而不含其他字符的行。
-y 当进行比较时忽略字母的大小写。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 找到匹配项。
第 1 年 未找到匹配项。
>1 发现语法错误,或者文件不可访问(即使找到了匹配项)。

示例

要想使用包含模式匹配字 +、?、|、( 和 ) 中的一个扩展模式,请输入:

  egrep "\(([A-z]+|[0-9]+)\)" my.txt

它会显示那些包含在圆括号里字母或数字的行,而不是在圆括号里包含数字字母组合的行。 匹配(y)(783902),但不(alpha19c).

注: 使用 埃格雷普 命令时, \ ((反斜杠后跟左括号) 或 \ ((反斜杠后跟右括号)) 与文本中的括号匹配,但 ((左括号) 和) (右括号) 是对模式部分进行分组的特殊字符。 使用 格雷普 命令时,反向为 true。

文件

描述
/usr/bin/egrep 包含指向 egrep 命令的硬链接。
/bin/egrep 指定了指向 egrep 命令的符号链接。