现在的位置: 首页 > 综合 > 正文

Linux基本命令之grep

2013年08月25日 ⁄ 综合 ⁄ 共 1153字 ⁄ 字号 评论关闭
 
1. Grep含义:

grep是由 g/RE/p 拼起来的,其中g为global的意思,RE为regular expression的简写,p为print的意思;即grep的意思为“全局搜索正则表达式并打印该行”(grep名称起源于ex编辑器)。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。 

2. Grep家族:

grep家族包括grep、egrep和fgrep,其中egrep和fgrep是grep的简单变种。

egrep扩展了grep,支持更多的正则表达式元字符。

fgrep叫fixed grep或fast grep,它将所有的字符当作字面值,即正则表达式元字符不再是特殊字符。

备注:在Ubuntu13.04的GNU版本的grep上进行测试发现grep命令支持的正则表达式元字符与egrep同样。只是在使用时,grep将字符串中正则表达式的扩展字符解释为字符,而不是正则表达式的扩展元字符,除非经过转义符转义;而egrep则默认将字符串中包含的扩展字符解释为正则表达式的扩展元字符,正则表达式的元字符不需要经过转义,这才是egrep与grep真正的不同,而不是说支持的正则表达式的字符集不同。查找man命令,我们获得了确认:


   -E, --extended-regexp
              Interpret PATTERN as an extended regular expression (see below).

例如:可以尝试下面的句子,就知道grep与egrep的不同了

grep -E '219|216' datafile
grep '219\|216' datafile
grep '219|216' datafile 

3. Grep选项:

匹配控制:
-e#指定字符串做为查找文件内容的样式。  
-f#指定规则文件,其内容含有一个或多个规则样式
-i#忽略字符大小写的差别。
-v#显示不包含匹配文本的所有行。   
-w#只显示全字符合的列。
输出控制:
-c#只输出匹配行的计数。
-L#列出文件内容不符合指定的样式的文件名称。 
-l#列出文件内容符合指定的样式的文件名称
-n#在显示符合样式的那一行之前,标示出该行的列数编号。   
-H#在显示符合样式的那一行之前,表示该行所属的文件名称。
-h #在显示符合样式的那一行之前,不标示该行所属的文件名称。
 
参考:
 
 
转载请注明原载地址:http://blog.csdn.net/xinhanggebuguake

抱歉!评论已关闭.