day17-正则表达式_ ^ {17}{0-9x]$

53 阅读2分钟
.$  以任意字符结尾的行(坑)

\ 转义 让原有特殊含义的字符脱掉马甲 还愿本义 \n 回车 \t 按tab键 tr '\n' '\t' >oldboy.txt 替换内容中的回车 * 逐行匹配,前1个字符连续出现0次或0次以上 000 000000000000000 连续出现的0 oldboy .* 表示所有内容 ^.* 组合符以任意0个或多个字符开头 .*$ 组合符以任意0个或多个字符结尾

[abc] 匹配[]集合内的任意一个字符a或b或c也可以写成[a-c] [^abc] 取反,不包含[]集合内的任意一个字符a或b或c也可以写成[^a-c]


#### 小测试:


显示以m或n或o开头的行  
 以m或n或点结尾的行  
 显示以m或n或o开头的并且以m或n或点结尾的行  
 ![image.png](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9f422149b05640089bce3640d71b2f75~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1771511593&x-signature=UQolvI5VntMdsf55fISF8Unswnw%3D)



## ※ 扩展正则表达式(ERE)




> 

> egrep ===grep -E  

>  用于在文件内查找指定的字符串。`egrep`执行效果与`[grep] -E`相似

> 

> 

> 




  • 匹配前一个字符1次或1次以上 一般与[ ]一起使用 | 或者 () 分组过滤被括起来的东西表示一个整体 用来表示后向引用 被括起来的内容相当于是1个整体

? 匹配前一个字符0次或1次 { } 匹配字符最少几次,最多几次 a{n,m} 匹配a最少n次,最多m次 a{n,} 匹配a最少n次 a{n} 匹配a只有n次 a{,m} 匹配a最多m次 [:/]+ 匹配:或/1次或多次 \n 后项引用,例如(aa)\1 匹配aaaa




> 

> `主要的扩展正则表达式`  

>  . + 匹配前一个字符1次或1次以上,一般与[ ]一起使用  

>  | 或者  

>  ( ) 用来表示后向引用  

>  ? 匹配前一个字符0次或1次

> 

> 

> 




[?root@oldboy /tmp]# egrep -n "oldboy|linux|txt" oldboy.txt 2:I am oldboy teacher! 3:I teach linux. 6:my blog is oldboy.blog.51cto.com 7:our size is blog.oldboyedu.com 13:oldboy.txtoldboy.txt


() 后向应用(反向引用)



[?root@oldboy /tmp]# egrep -n "oldb(o|e)y" oldboy.txt 2:I am oldboy teacher! 6:my blog is oldboy.blog.51cto.com 7:our size is blog.oldboyedu.com 11:my god ,i am not oldbey,but OLDBOY! 13:oldboy.txtoldboy.txt


{ } 匹配字符最少n次,最多m次



[✡root@oldboy /tmp]# egrep '0{1,3}' oldboy.txt my qq is 49000448 not 4900000448. 45702$ [✡root@oldboy /tmp]# egrep -o '0{1,3}' oldboy.txt 000 000 00 0


#### 查询18位身份证的小测试



首先我们添加环境: vim oldboy.txt 金 211324198705244720 万 500224197105168312 任 1231231231oldboy 任 3oldboy 任 lidao97303136098 任 alex2197303136098 任 350182197303oldgir 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X XXXXXXXXXXXXXXXXXX0



以1-9开头过滤 egrep '[0-9X]{18}' oldboy.txt [✡root@oldboy /tmp]# egrep '[0-9X]{18}' oldboy.txt 金 211324198705244720 万 500224197105168312 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X XXXXXXXXXXXXXXXXXX0



以1-9开头 1-9或X结尾 egrep '[0-9]{17}[0-9X]' oldboy.txt [✡root@oldboy /tmp]# egrep '[0-9]{17}[0-9X]' oldboy.txt 金 211324198705244720 万 500224197105168312 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X