浅析grep工具相关选项及正则表达式

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的相关文档:

wKiom1esZMHAE5fFAACiAOxe6kk012.png

(一)grep语法

grep的语法格式为: grep    [options]    'pattern'     FILE
                                       命令      选项             模式           文件

note:grep不加引号直接过滤字符串;grep在进行模式匹配的时候必须加引号,单引和双引号都可以;grep在引用变量的时候必须加双引号。

(二)grep的相关选项

-r:递归的搜索
       -v:反向选取,只显示不符合模式的行

-o:只显示被模式匹配到的字符串,而不是整个行

-i:匹配时不区分大小写
      -A #:显示匹配到的行时,顺便显示后面的#行(#表示数值)
      -B #:前面的#行
      -C #:前后的#行
      -E:使用扩展的正则表达式

使用示例:

wKioL1esZPGQnUKhAABZeVuZmPk010.png

wKiom1esZPKhwiRDAABUBrwCLIk881.png

wKioL1esZPKhgacfAAA2_neDv4s870.png

(三)正则表达式

利用grep找出符合某个模式(Pattern)的一类字符串就不得不使用正则表达式了。

正则表达式(man regex)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串,通常被用来检索或替换那些符合某个模式的文本内容。

正则表达式分为:基本正则表达式和扩展正则表达式。

正则表达式由三种元素组成:

字符类(Character Class):在模式中表示一个字符,但是取值范围是一类字符中的任意一个。      

数量限定符(Quantier):例如邮件地址的每一部分可以有一个或多个x字符,IP地址的每一部分可以有1-3个y字符。      

位置限定符(Anchor):描述各种字符类以及普通字符之间的位置关系,例如邮件地址分三部分,用普通字符@和.隔 开,IP地址分四部分用.隔开,每一部分都可以用字符类和数量限定符描述。

正则表达式的相关介绍:

字符类:

wKiom1esaLmjUr6yAAFK7xkuv9k718.png

使用示例:

wKioL1esa9PwFZNxAAA0NBy-QEI030.png

wKiom1esa9TSW407AAA9yDd0fRQ109.png

wKioL1esa9awHOekAABCBqevflI177.png

数量限定符:

wKiom1esaQ-wullKAAJDyy6JfZs500.png

使用示例:

wKiom1esbr3St_3XAABBs_2fDTU010.png

wKiom1esbr2R_rYIAAA-KYP1QUQ624.png

wKioL1esbr7iilCaAAA4JQnFGeM930.png

wKioL1esbr-Q_2POAAAU_iP9B4s987.png

位置限定符:

wKioL1esaVOgW4zTAAFLKWQQBXk784.png

使用示例:

wKioL1escPPTD069AABIpj1TrMQ325.png

wKiom1escPTSg6LXAABAL_pmvik154.png

wKiom1escPXTpWScAAAumrLl4Zs148.png

note:使用--color命令使匹配字符高亮。

(四)小结

以上使用的是grep正则表达式的Extended规范,所有加上了-E选项。Basic规范也有这些语法,只是字符?+{}|()应 解释 为普通字符,要表示上述特殊含义则需要加\转义。如果用grep而不是egrep,并且不加-E 参数,则应该遵照Basic 规范来写正则表达式。 






优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/luminous/1837069

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。