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

alias grep=‘grep --color=auto’
CentOS 7中已自动设置


## 正则表达式分类:


基本正则(BRE)



^ 以…开头的行 ^old
$ 以…结尾的行 old$

^$ 空行 -n显示行号
这一行中什么都没有 grep '^$’oldboy.txt
空行 grep -n
排除空行 grep -nv

. (点)匹配任意字符 类似通配符的问号 不匹配空行
grep -o (补充grep的参数)
显示grep每次过滤出什么内容
显示grep执行过程
.$ 以任意字符结尾的行(坑)

\ 转义 让原有特殊含义的字符脱掉马甲 还愿本义
\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://img-blog.csdnimg.cn/img_convert/0c251cfa39669bb1b7ede41d60e37e7f.png)


## ※ 扩展正则表达式(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 http://oldboy.blog.51cto.com
7:our size is http://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 http://oldboy.blog.51cto.com
7:our size is http://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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值