加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:20:03 所属栏目:百科 来源:网络整理
导读:grep是linux下一个重要的文本处理工具之一,全称是 Globel Search Regular Expression and Printing out the line( 全面搜索正则表达式并把行打印出来 ) 是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的

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 规范来写正则表达式。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读