Grep命令详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Grep命令详解
grep [ -E | -F ] [ -i ] [ -h ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Separator ] ] { [ -e PatternList ... ] [ -f PatternFile ... ] | PatternList ... } [ 文件... ]
描述
grep
命令用于搜索由Pattern参数指定的模式,并将每个匹配的行写入标准输出中。这些模式是具有限定的正则表达式,它们使用ed或egrep命令样式。grep命令使用压缩的不确定算法。
如果在File参数中指定了多个名称,grep命令将显示包含匹配行的文件的名称。对shell 有特殊含义的字符($, *, [, |, ^, (, ), \ ) 出现在Pattern
参数中时必须带双引号。如果Pattern参数不是简单字符串,通常必须用单引号将整个模式括起来。在诸如[a-z], 之类的表达式中,-(减号)cml 可根据当前正在整理的序列来指定一个范围。整理序列可以定义等价的类以供在字符范围中使用。如果未指定任何文件,grep 会假定为标准输入。
注意:
1.行被限制为2048个字节。
2.段落(使用-p标志时)长度当前被限制为5000个字符。
3.请不要对特殊文件运行grep命令,这样做可能产生不可预计的结果。
4.输入行不应包含空字符。
5.输入文件应该以换行符作为结束。
6.正则表达式不会对换行符进行匹配。
7.虽然一些标志可以同时被指定,但其中的某些标志会覆盖其它标志。例如,-l选项将优先于所有其它标志。另外,如果您同时指定了-E
和-F标志,则后指定的那个会有优先权。
标志
-b
在每行之前添加找到该行时所在的块编号。使用这个标志有助于通过上下文来找到磁盘块号码。-b标志不能用于来自标准输入和管道的输入。
-c
仅显示匹配行的计数。
-E
将每个指定模式视作扩展的正则表达式(ERE)。ERE 的空值将匹配所有的行。
注:带有-E标志的grep命令等价于egrep 命令,只不过它们的错误和使用信息不同以及-s 标志的作用不同。
-e PatternList
指定一个或多个搜索模式。其作用相当于一个简单模式,但在模式以-(减号)开始的情况下,这将非常有用。模式之间应该用换行符分隔。连续使用两个换行符或者在引号后加上换行符("\n) 可以指定空模式。除非同时指定了-E或-F标志,否则每个模式都将被视作基本正则表达式(BRE)。grep可接受多个-e和-f标志。在匹配行时,所有指定的模式都将被使用,但评估的顺序没有指定。
-F
将每个指定的模式视作字符串而不是正则表达式。空字符串可匹配所有的行。
注:带有-F标志的grep命令等价于fgrep 命令,只不过它们的错误和使用信息不同以及-s 标志具有不同的作用。
-f PatternFile
指定包含搜索模式的文件。模式之间应该用换行符加以分隔,空行将被认为是空模式。每种模式都将被视作基本的正则表达式(BRE),除非同时指定了-E或-F标志。
-h
禁止在匹配行后附加包含此行的文件的名称。当指定多个文件时,将禁止文件名。
-i
在进行比较时忽略字母的大小写。
-l
仅列出(一次)包含匹配行的文件的名称。文件名之间用换行符加以分隔。如果搜索到标准输入,将返回(标准输入)的路径名。-l标志同-c和-n标志的任意组合一起使用时,其作用类似于仅使用了-l标志。
-n
在每一行之前放置文件中相关的行号。每个文件的起始行号为1,在处理每个文件时,行计数器都将被复位。
-p[ Separator]
显示包含匹配行的整个段落。段落之间将按照Separator参数指定的段落分隔符加以分隔,这些分隔符是与搜索模式有着相同格式的模式。包含段落分隔符的行将仅用作分隔符,它们不会被包含在输出中。缺省的段落分隔符是空白行。
-q
禁止所有写入到标准输出的操作,不管是否为匹配行。如果选择了输入行,则以零状态退出。-q
标志同-c和-l、-n标志的任意组合一起使用时,其作用类似于仅使用了-q标志。
-s
禁止通常因为文件不存在或不可读取而写入的错误信息。其它的错误信息并未被禁止。
-v
显示所有与指定模式不匹配的行。
-w
执行单词搜索。
-x
显示与指定模式精确匹配而不含其它字符的行。
-y
当进行比较时忽略字符的大小写。
PatternList
指定将在搜索中使用的一个或多个模式。这些模式将被视作如同是使用-e标志指定的。
File
指定将对其进行模式搜索的文件的名称。如果未给出File变量,将使用标准输入。
退出状态
此命令返回下列出口值:
找到匹配项。
1
未找到匹配项。
>1
发现语法错误,或者文件不可访问(即使找到了匹配项)。
示例
1.若使用包含以下模式匹配字符的模式:*, ^, ?, [, ], \(, \), \{ 和\}请输入:
grep "^[a-zA-Z]" pgm.s
这将显示pgm.s 中第一个字符为字母的所有行。
2.若显示所有与模式不匹配的行,请输入:
grep -v "^#" pgm.s
这将显示pgm.s 中首字母不是#(井字符)的所有行。
3.若显示文件file1 中与abc 或xyz 字符串匹配的所有行,请输入:
grep -E "abc|xyz" file1
4.若在名为test2 的文件中搜索$(美元符号),请输入:
grep \\$ test2
为了强制shell 将\$(单反斜杠和美元符号)传递给grep命令,必须要使用\\(双反斜杠)。\(单反斜杠)字符可通知grep命令将其后的字符(本例中为$)视作原义字符而不是表达式字符。如果使用fgrep命令,则可以不必使用反斜杠之类的转义字符