17 个案例带你 5 分钟搞定 Linux 正则表达式

栏目: IT技术 · 发布时间: 5年前

内容简介:正则表达式是一种字符模式,用于在查找过程中匹配制定的字符。

17 个案例带你 5 分钟搞定  <a href='https://www.codercto.com/topics/18170.html'>Linux</a>  正则表达式

17 个案例带你 5 分钟搞定 Linux 正则表达式

正则表达式是一种字符模式,用于在查找过程中匹配制定的字符。

元字符通常在Linux中分为两类:

  1. Shell元字符,由Linux Shell进行解析;

  2. 正则表达式元字符,由vi/grep/sed/awk等文本处理 工具 进行解析;

正则表达式一般以文本行进行处理,在进行下面实例之前,先为grep命令设置—color参数:

$ alias grep='grep --color=auto'

这样每次过滤出来的字符串都会带色彩了。

在开始之前还需要做一件事情,就是创建一个测试用的re-file文件,内容如下:

$ cat re-file
I had a lovely time on our little picnic.
Lovers were all around us. It is springtime. Oh
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them?  I can only hope love.
is forever. I live for you. It's hard to get back in the
groove.

正则表达式元字符

17 个案例带你 5 分钟搞定 Linux 正则表达式

  • 特殊的元字符

17 个案例带你 5 分钟搞定 Linux 正则表达式

  • 扩展的正则表达式

17 个案例带你 5 分钟搞定 Linux 正则表达式

实操

  • 匹配以love开头的所有行

$ grep '^love' re-file
love, how much I adore you. Do you know
  • 匹配love结尾的所有行

$ grep 'love$' re-file
clover. Did you see them?  I can only hope love.
  • 匹配以l开头,中间包含两个字符,结尾是e的所有行

$ grep 'l..e' re-file
I had a lovely time on our little picnic.
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them?  I can only hope love.
is forever. I live for you. It's hard to get back in the
  • 匹配0个或多个空行,后面是love的字符

$ grep ' *love' re-file
I had a lovely time on our little picnic.
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them?  I can only hope love.
  • 匹配love或Love

$ grep '[Ll]ove' re-file  # 对l不区分大小写
I had a lovely time on our little picnic.
Lovers were all around us. It is springtime. Oh
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them?  I can only hope love.
  • 匹配A-Z的字母,其次是ove

$ grep '[A-Z]ove' re-file
Lovers were all around us. It is springtime. Oh
  • 匹配不在A-Z范围内的任何字符行,所有的小写字符

$ grep '[^A-Z]' re-file
I had a lovely time on our little picnic.
Lovers were all around us. It is springtime. Oh
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them?  I can only hope love.
is forever. I live for you. It's hard to get back in the
groove.
  • 匹配love.

$ grep 'love\.' re-file
clover. Did you see them?  I can only hope love.
  • 匹配空格

$ grep '^$' re-file
  • 匹配任意字符

$ grep '.*' re-file
I had a lovely time on our little picnic.
Lovers were all around us. It is springtime. Oh
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them?  I can only hope love.
is forever. I live for you. It's hard to get back in the
groove.
  • 前面o字符重复2到4次

$ grep 'o\{2,4\}' re-file
groove.
  • 重复o字符至少2次

$ grep 'o\{2,\}' re-file
groove.
  • 重复0字符最多2次

$ grep 'o\{,2\}' re-file
I had a lovely time on our little picnic.
Lovers were all around us. It is springtime. Oh
love, how much I adore you. Do you know
the extent of my love? Oh, by the way, I think
I lost my gloves somewhere out in that field of
clover. Did you see them?  I can only hope love.
is forever. I live for you. It's hard to get back in the
groove.
  • 重复前一个字符一个或一个以

$ egrep "go+d" linux.txt
Linux is a good
god assdxw bcvnbvbjk
gooodfs awrerdxxhkl
good
  • 0个或者一个字符

ansheng@Ubuntu:/tmp$ egrep "go?d" linux.txt
god assdxw bcvnbvbjk
gdsystem awxxxx
  • 或,查找多个字符串

$ egrep "gd|good" linux.txt
Linux is a good
gdsystem awxxxx
good
  • 分组过滤匹配

$ egrep "g(la|oo)d" linux.txt
Linux is a good
glad
good

来源:公众号 IT 释然杂谈

GOPS 2020  全球运维大会 · 2020 深圳站,更多 DevOps、AIOps、自动化运维精彩议题,等你来~

17 个案例带你 5 分钟搞定 Linux 正则表达式

近期好文推荐:

覆盖全球数十个国家,千亿级的监控体系是这样炼成的

最爽不过拆快递:京东物流海量仓储系统智能监控揭秘

滴滴开源夜莺,新一代企业级监控解决方案!Open-Falcon 之后最新力作

“高效运维”公众号诚邀广大技术人员投稿,

投稿邮箱:jiachen@greatops.net,或添加联系人微信:135 2116 9787.

GOPS 2020 · 深圳站 

商务合作 周静:130 7118 2180 (微信同号)李伟:130 2108 2989(微信同号)

票务咨询 田聪然:132 6188 5689(微信同号)李伟:130 2108 2989(微信同号)

点击 阅读原文 ,立即订票

你点的每个赞,我都认真当成了喜欢


以上所述就是小编给大家介绍的《17 个案例带你 5 分钟搞定 Linux 正则表达式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Hello World

Hello World

Hannah Fry / W. W. Norton Company / 2018-9 / GBP 17.99

A look inside the algorithms that are shaping our lives and the dilemmas they bring with them. If you were accused of a crime, who would you rather decide your sentence—a mathematically consistent ......一起来看看 《Hello World》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具