egrep 命令
用途
搜索文件获得模式。
语法
egrep [ -h ] [ -i ] [ -p [ Separator ] ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ -b ] [ -n ] | [ -c | -l | -q ] ] { { -ePattern | -fStringFile } ... | Pattern } [ File ... ]
描述
egrep 命令会在输入文件(缺省值为标准输入)中搜索与用 Pattern 参数指定的模式相匹配的行。这些模式是完整的 正则表达式就像在 ed 命令中的那样(除了 \ (反斜杠)和 \\ (双反斜杠))。下列规则也应用于egrep 命令:
- 一个正则表达式后面带一个 + (加号)会匹配一个或多个的正则表达式。
- 一个正则表达式后面带一个 ? (问号)会匹配零个或一个该正则表达式。
- 由 | (竖线)或者换行符隔开的多个正则表达式会匹配与任何一个正则表达式所匹配的字符串。
- 一个正则表达式可以被包括在“()”(括弧)中进行分组。
换行符将不会被正则表达式匹配。
运算符的优先顺序是 [, ], *, ?, +, 合并, | 和换行符。
注意: egrep 命令与 grep 命令带 -E 标志是一样的,除了错误消息和使用消息不同以及 -s 标志的功能不同之外。
egrep 命令会显示包含该匹配行的文件,如果您指定了多于一个 File 参数的话。对 shell 有特殊含义的字符 ($, *, [, |, ^, (, ), \ ) 出现在Pattern 参数中时必须带双引号。如果 Pattern 参数不是简单字符串,通常必须用单引号将整个模式括起来。在表达式中比如[a-z],减号表示通过当前整理序列。整理序列可以定义等价的类以供在字符范围中使用。它使用了快速确定性的算法,有时需要外部空间。
注意:
- 行被限制在 2048 字节。
- 段落(在-p 标志下)当前限制在 5000 字符长。
- 不要在特殊文件上运行grep 命令,因为它会产生不可预测的结果。
- 输入行不应该包含 NULL 字符。
- 输入文件应该以换行符结束。
- 尽管有些标志可以同时被指定,但是有些标志会覆盖其他的标志。例如,如果同时指定 -l和 -n ,只有文件名写入到标准输出中去。
标志
| -b | 在每行前面加上找到该行的块号码。使用此标志有助于按照上下文查找磁盘块号码。-b 标志不能用于来自标准输入和管道的输入。 |
| -c | 仅显示匹配行的计数。 |
| -e 模式 | 指定一个模式。这象一个简单的模式,但是它在模式 以一个 -(负号)开始时很有用。 |
| -f StringFile | 指定包含字符串的文件。 |
| -h | 当处理多个文件时排除文件名。 |
| -i | 当进行比较时忽略字符的大小写。 |
| -l | 列出包含匹配行的文件名(一次)。文件名之间用换行符加以分隔。如果搜索标准输入,会返回一个 "(StandardInput)"路径名。 |
| -n | 在每行之前加上该行在文件中的相对行号。 |
| -p[ Separator] | 显示包含匹配行的整个段落。段落之间将按照分隔符 Separator参数指定的段落分隔符加以定界,这些分隔符是与搜索模式有着相同格式的模式。包含段落分隔符的行将仅用作分隔符;它们不会被包含在输出中。缺省的段落分隔符是空白行。 |
| -q | 禁止所有的输出到标准输出,不管匹配行。如果选中输入行,以 0 状态退出。 |
| -s | 仅显示出错消息。这点对检查状态有用。 |
| -v | 显示除了与指定的模式匹配的行之外的所有行。 |
| -w | 执行单词搜索。 |
| -x | 显示与指定模式精确匹配而不含其它字符的行。 |
| -y | 当进行比较时忽略字符的大小写。 |
退出状态
此命令返回下列出口值:
| 0 | 找到匹配项。 |
| 1 | 未找到匹配项。 |
| >1 | 发现语法错误,或者文件不可访问(即使找到了匹配项)。 |
例
要想使用包含模式匹配字 +, ?, |, (, 和 ) 中的一个扩展模式,请输入:
egrep "\(([A-z]+|[0-9]+)\)" my.txt
它会显示那些包含在圆括号里字母或数字的行,而不是在圆括号里包含数字字母组合的行。它会匹配 (y) 和(783902),而不是 (alpha19c)。
注意:当使用 egrep 命令时 \ ( (斜杠后跟着开括弧)或者 \ ( (斜杠后跟着闭括弧)匹配文本中的括弧,但是 ( (开括弧)和 ) (闭括弧)都是模式组部分中的特殊字符。在使用 grep 命令时,逆向也成立。
[root@gc1: /root/scripts]$ ls
1we 52.txt da
351_TM02_PSNWPDPEVENT2015030914552207.txt adad datong20140408234.txt
43.txt adsade
[root@gc1: /root/scripts]$ ls |egrep ".*[0-9]{8}\.txt" ----前面出现8次【0-9】数字
351_TM02_PSNWPDPEVENT2015030914552207.txt
datong20140408234.txt
正则表达式
| * | 0个或多个*号之间的那个字符 | Name* |
| . | 一个任意字符 | ..myname*f |
| ^ | 匹配行首或后面字符的非 | ^[^a-z] 放括号里面表示非 不是以[a-z]开头的 |
| $ | 匹配行尾 | Wahah$ |
| [] | 匹配字符集和 | [a-z] |
| \ | 转义符 | \. \$ \# \@ |
| \ | 精确匹配 | \ |
| \{n\} | 匹配前面字符出现n次 | grep 'w\{3\}' text1.sh grep 'w\{3,\}' text1.sh grep 'w\{3,6\}' text1.sh |
| \{n,\} | 匹配前面字符至少出现n次 | |
| \{n,m\} | 匹配前面字符出现n~m次 | |
| ^$ | 匹配所有空行 |
|
| ? | 0个或一个?号之前的那个字符 |
|
| + | 一个或多个+之前的那个字符 |
|
|
|
|
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-1661999/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29096438/viewspace-1661999/
1110

被折叠的 条评论
为什么被折叠?



