grep是linux下一个重要的文本处理工具之一,全称是Globel Search Regular Expression and Printing out the line(全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep家族包括grep、egrep和fgrep。 egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep。fgrep是fast grep,不支持元字符,但是搜索速度更快。grep搜索的结果被送到屏幕,不影响原文件内容。
可以使用man grep命令查看grep的相关文档:
(一)grep语法
grep的语法格式为:grep [options] 'pattern' FILE
命令 选项 模式 文件
note:grep不加引号直接过滤字符串;grep在进行模式匹配的时候必须加引号,单引和双引号都可以;grep在引用变量的时候必须加双引号。
(二)grep的相关选项
-o:只显示被模式匹配到的字符串,而不是整个行
-i:匹配时不区分大小写
-A #:显示匹配到的行时,顺便显示后面的#行(#表示数值)
-B #:前面的#行
-C #:前后的#行
-E:使用扩展的正则表达式
使用示例:
(三)正则表达式
利用grep找出符合某个模式(Pattern)的一类字符串就不得不使用正则表达式了。
正则表达式(man regex)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串,通常被用来检索或替换那些符合某个模式的文本内容。
正则表达式分为:基本正则表达式和扩展正则表达式。
正则表达式由三种元素组成:
字符类(Character Class):在模式中表示一个字符,但是取值范围是一类字符中的任意一个。
数量限定符(Quantier):例如邮件地址的每一部分可以有一个或多个x字符,IP地址的每一部分可以有1-3个y字符。
位置限定符(Anchor):描述各种字符类以及普通字符之间的位置关系,例如邮件地址分三部分,用普通字符@和.隔 开,IP地址分四部分用.隔开,每一部分都可以用字符类和数量限定符描述。
正则表达式的相关介绍:
字符类:
使用示例:
数量限定符:
使用示例:
使用示例:
note:使用--color命令使匹配字符高亮。
(四)小结
以上使用的是grep正则表达式的Extended规范,所有加上了-E选项。Basic规范也有这些语法,只是字符?+{}|()应 解释 为普通字符,要表示上述特殊含义则需要加\转义。如果用grep而不是egrep,并且不加-E 参数,则应该遵照Basic 规范来写正则表达式。
原文链接:https://www.f2er.com/regex/359014.html