Shell基础(五)正则表达式

正则表达式

基础正则表达式

前面在讲通配符的时候也讲了正则表达式和通配符的区别,正则表达式是在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名。

元字符作用
*匹配前一个字符重复0次,或任意多次。
.匹配任意一个字符,可以用".*"匹配所有字符。
[]匹配括号中任意一个字符,[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c。
[-]匹配中括号中任意一个字符,-代表一个范围,例如,[a-z]代表匹配一个小写字母,还可以组合起来,形成[0-9a-z]、[A-Za-z]等用法。
[^]逻辑非,表示匹配不是括号中的一个字符,例如,[^0-9]代表匹配不是一个数字的字符。
^匹配行首。
$匹配行尾。
\转义符,用于取消将特殊符号的含义取消。
\ {n}表示其前面的字符恰好出现n次,例如[0-9]{4}表示4位数字。当使用拓展正则时,大括号前面的反斜杠就不需要了,下面同样。
\ {n,}表示其前面的字符出现不小于n次。
\ {n,m}表示其前面的字符出现n到m次。

拓展正则

Linux中的grep命令有一些正则符号是无法识别的,这些符号被称作拓展元符号,需要用"egrep"命令或"grep -E"选项才能识别。

拓展元符号作用
+前一个字符匹配1次或任意多次。
匹配前一个字符重复0次或1次,?符号在shell中属于拓展用法,要用egrep命令。
匹配两个或多个分支选择。
()匹配其整体为1个字符,即模式单元,可以理解为由多个单个字符组成的大字符。

正则实例

  • 匹配所有字符。
[root@localhost ~]# grep ".*" anaconda-ks.cfg
  • 匹配行首。
[root@localhost ~]# grep "^i" anaconda-ks.cfg 
ignoredisk --only-use=sda
  • 匹配行尾。
[root@localhost ~]# grep "a$" anaconda-ks.cfg 
ignoredisk --only-use=sda
%anaconda
  • 匹配空白行。
[root@localhost ~]# grep "^$" anaconda-ks.cfg 
  • 匹配除了空白行之外的字符串。
[root@localhost ~]# grep -v  "^$" anaconda-ks.cfg 
#"-v"是取反的意思
  • 匹配以数字结尾的行。
[root@localhost ~]# grep "[0-9]$" anaconda-ks.cfg
  • 利用正则筛选邮箱
[root@localhost ~]# egrep "[0-9a-zA-Z_]+@[0-9a-zA-Z]+\.[0-9a-zA-Z]+" mail

ps:尚硅谷linux视频课程学习笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值