grep

grep: 在文件中全局查找指定的正则表达式,并打印所有包含该表达式的行

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

fgrep: 固定grep(fixed grep),有时也被称作快速(fast grep),它按字面解释所有的字符

grep: 使用基本元字符集 ^, $, ., *, [], [^], < >,(),{}, +, |

egrep(或grep -E): 使用扩展元字符集 ?, +, { }, |, ( )
注:grep也可以使用扩展集中的元字符,仅需要对这些元字符前置一个反斜线

规则表达式

^    	  # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
$    	  # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
.    	  # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    
*    	  # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    
.*   	  # 一起用代表任意字符。   
[]   	  # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    
[^]  	  # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\)    # 标记匹配字符,如'\(love\)',love被标记为1。    
\<        # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
\>        # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    
x\{m\}    # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    
x\{m,\}   # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    
x\{m,n\}  # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   
\w    	  # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W        # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
\b    	  # 单词锁定符,如: '\bgrep\b'只匹配grep。  

命令格式

grep [选项] PATTERN filename filename ...
-i --ignore-case       # 忽略字符大小写的差别
-l --file-with-matches # 列出文件内容符合指定的范本样式的文件名称
-n --line-number       # 在显示符合范本样式的那一列之前,标示出该列的编号	
-c --count    	       # 计算符合范本样式的列数	
-s --no-messages       # 不显示错误信息
-q --quiet或--silent   # 不显示任何信息
-v --revert-match      # 反转查找
-R, -r, --recursive    # 递归针对目录
--color		       # 颜色
-o, --only-matching    # 只显示匹配的内容
-B 		       # 除了显示符合样式的那一行之外,并显示该行之前的内容
-A 		       # 除了显示符合范本样式的那一行之外,并显示该行之后的内容
-C	               # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容

Example:

egrep 'NW' datafile		    #从文件中过滤'NW'字符的行
egrep '^n' datafile		    #从文件中过滤以'n'开头的字符的行
egrep '4$' datafile		    #从文件中过滤以'4'结尾的字符的行
egrep TB Savage datafile 	    #从文件中过滤'TB'和'Savage'字符的行
egrep ‘TB Savage’ datafile	    #从文件中过滤'TB Savage'字符的行
egrep '^[we]' datafile		    #匹配以'w或'以'e'开头的字符的行
egrep '[^0-9]' datafile		    #匹配以0~9任一数字开头的字符的行
egrep '[A-Z][A-Z][A-Z]' datafile    #匹配有三个任意大写字母连在一起的字符的行
egrep 'ss* ' datafile		    #匹配ss后面0个或多个s字符的行
egrep '[a-z]{9}' datafile	    #匹配a~z任一字符出现9次的行
egrep '\<north' datafile	    #匹配以north开头的行
egrep '\<north\>' datafile	    #匹配有north这个单词的行
egrep '\<[a-r].*n\>' datafile	    #匹配a~r任一字符与n之间有任意字符的行
egrep '^n\w*\W' datafile	    #匹配以n开头后面跟0个或多个文字或数字字符后面在跟一个非单词字符
egrep '\bnorth\b' datafile	    #只匹配north单词
egrep 'NW|EA' datafile		    #匹配'NW'或'EA'任一字符的行
egrep '3+' datafile		    #匹配3出现1次或多次的行
egrep '2\.?[0-9]' datafile	    #匹配2后面任一单个字符出现0到1次0~9之间任一数字的行
egrep '(no)+' datafile		    #匹配no这个单词出现1次或多次的行
egrep 'S(h|u)' datafile 	    #匹配Sh或Su的行
egrep 'Sh|u' datafile		    #匹配Sh或u的行
posted @ 2021-08-27 16:02  Cai_HL  阅读(77)  评论(0编辑  收藏  举报
>