通配符及正则表达式

常用正则表达式特殊字符及含义

类别 区别 支持的命令
通配符 方便我们进行查找文件 Linux下面大部分命令支持
正则 方便我们进行过滤(在文件中找内容) Linux三剑客 开发语言Python Go PHP JAVA

基础正则表达式符号

字符 作用
^ 以……开头的行
$ 以……什么结尾
^$ 组合符号,表示空行
. 点号,表示匹配任意一个字符(不匹配空行)
\ 转义字符,给特殊符号脱掉马甲。
* 匹配前一个字符(连续出现)0次或1次以上
.* 组合符,匹配所有内容
^.* 组合符,匹配以任意多个字符开头得内容
.$* 组合符,匹配以任意多个字符结尾的内容
[abc] 匹配[]集合内任意一个字符a或b或c;[abc]也可以也可以写成[a-c]
[^abc] 匹配不包含后的任意字符a或b或c,这里的表示对[abc]取反

环境准备

[root@oldboy /oldboy]# cat >>oldboy.txt<<EOF
>I am oldboy teacher!
>I teach linux.

>I like badminton ball ,billiard ball and chinese chess!
>my blog is http://oldboy.blog.51cto.com 
>our size is http://blog.oldboyedu.com 
>my qq is 49000448
>
>not 4900000448.
>my god ,i am not oldbey,but OLDBOY!
>EOF

^号的例子:

在这个文件中找出以ssh开头的行

[root@oldboy /oldboy]# grep '^I' oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!

$号的例子

在文件中找出以m结尾的行

[root@oldboy /oldboy]# grep 'm $' oldboy.txt
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 

这里m后面是故意加了空格的,所以m后面需要加一个空格

^$的例子

在文件中找出空行

[root@oldboy /oldboy]# grep -n '^$' oldboy.txt
3:
8:

.(点)号的例子

在文件中筛选任意字符

[root@oldboy /oldboy]# grep -n '.' oldboy.txt
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com 
6:our size is http://blog.oldboyedu.com 
7:my qq is 49000448
9:not 4900000448.
10:my god ,i am not oldbey,but OLDBOY!

.(点)的执行过程

[root@oldboy /oldboy]# grep -o '.' oldboy.txt
I

a
m

o
l
d
b
o
y
……
省略若干

转义字符的例子

image

因为.在正则表达式里有特殊含义,所以需要用转义字符帮他脱掉马甲

转义字符系列

tr的应用
将文件里的回车换成空格

[root@oldboy /oldboy]# tr '[\n]' '[\t]' <oldboy.txt
I am oldboy teacher!    I teach linux.      I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com     our size is http://blog.oldboyedu.com   my qq is 49000448       not 4900000448. my god ,i am not oldbey,but OLDBOY! 
echo的应用
在字符串里插入空格和回车

[root@oldboy /oldboy]# echo -e 'oldboy\n\toldboy2'
oldboy
    oldboy2

*号的应用

在文件中筛选出现0字符出现的多少次

image

简单理解他可以匹配出连续出现的字符。连续0次就是不显示,0次以上就会向上面的一样显示出来

.*的例子

image

通过这个命令我的原意是想找出每一行从开头的任意字符到第一个o。结果他直接帮我找到最后一个o.这里先不要纠结怎么找出来原意需要的东西。通过这个例子是想介绍一下正则表达式的贪婪性。意思是有多少匹配多少。

[]的例子

从文件中筛选出a到z和A到Z之间的字符。

image

[a-z]===[a-zA-Z]
[a-zA-Z0-9]===[a-Z0-9]==[0-Z]

课堂练习题
显示以m或n或o开头的并且以m或n点结尾的行

[root@oldboy /oldboy]# grep '^[mno].*[mn.]$' oldboy.txt
not 4900000448.

[^]的例子

筛选除了abc之外的字符

image

这里的反选与grep的自带参数-v的区别是。他自带的是以行为单位,而正则是以字节为单位。

扩展正则

符号 作用
+ 前一个字符连续出现1次或多次,一般与[]一起使用
() 被括起来的内容相当于一个正体,用来表示向后引用(反向引用)
{} b{m,n}前一个字符连续出现至少m次最多n次b{m}前一个字符连续出现m次b{m,}前一个字符连续最多出现n次
前一个字符出现0次或1次

+号的例子

筛选0出现的多少次

image

基础正则不支持扩展正则。需要加上grep -E 或者egrep
+与号的区别是,是至少0次,+是至少1次。

|的例子

筛选文件中的oldboy或者linux字符

image

()的例子

筛选出文件中的oldboy或者oldbey

image

{}的例子

image

练习

环境准备

[root@oldboy /oldboy]# cat sfzeng.txt
金 211324198705244720
万 500224197105168312
任 1231231231oldboy
任 3oldboy
任 lidao97303136098
任 alex2197303136098
任 350182197303oldgir
吕 211282199209113038
孔 150000198309176071
邹 371001197412221284
贺 130185200011215926
杜 362522198711278101
向 14052219961008852X

筛选出环境里合格的身份证

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容