Shell之正则表达式

幽映每白日,清辉照衣裳。这篇文章主要讲述Shell之正则表达式相关的知识,希望能为你提供帮助。
@[toc](目录
一、正则表达式含义

  • 通常用于判断语句中,用来检查某一字符串是否满足某一格式 二、正则表达式组成
  • 正则表达式是由普通字符与元字符组成
  • 普通字符包括大小写字母、数字、标点符号及一些其他符号
  • 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
三、基础正则表达式常见元字符
  • 支持的工具:grep、egrep、sed、awk
    \\ :转义字符,用于取消特殊符号的含义,例: \\!、\\n、\\$等

^ :匹配字符串开始的位置,例: ^a、 ^the、 ^#、^[a-z]
$ :匹配字符串结束的位置,例: word$、 ^$匹配空行
. :匹配除\\n之外的任意的一个字符,例: go.d、 g..d
  • :匹配前面子表达式0次或者多次,例: good、 go.d
[list] :匹配list列表中的一个字符,例: go[ola]d, [abc]、 [a-z]、 [a-z0-9]、 [0-9]匹配任意一位数字
[^list] :匹配任意非list列表中的一个字符,例: [^0-9]、 [^A-20-9]、 [^a-z]匹配任意一位非小写字母
【Shell之正则表达式】n :匹配前面的子表达式n次,例: go2d、 [0-9]2 匹配两位数字
n, :匹配前而的子表达式不少于n次,例: go2, d、[0-9]2, 匹配两位及两位以上数字
n,m :匹配前面的子表达式n到m次,例: go2,3d、[0-9]2,3匹配两位到三位数字
注: egrep、 awk使用n、n,小、n, m匹配时“”前不用加“\\”
## 四、使用正则表达式 - 匹配139开头的手机号

#以139开头,后面随机8位数字组合
" ^139[0-9]8$"
egrep " ^139[0-9]8$" shoujihao.txt
grep " ^139[0-9]8$" shoujihao.txt
![image.png](https://s2.51cto.com/images/20211224/1640337128675931.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)- 匹配E-mail地址

用户名@ :^([a-zA-Z0-9-.+]+)@
子域名 :([a-zA-Z0-9
-.]+)
.顶级域名(字符串长度一般在2到5) :.([a-zA-Z]2,5)$
egrep ^([a-zA-Z0-9-.+]+)@([a-zA-Z0-9-.]+).([a-zA-Z]2,5)$ email.txt
awk /^([a-zA-Z0-9-.+]+)@([a-zA-Z0-9-.]+).([a-zA-Z]2,5)$/print $0 email.txt
![image.png](https://s2.51cto.com/images/20211224/1640338209471735.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)- 要求:区号以025开头 电话号码 以5或8开头的8位数 ![image.png](https://s2.51cto.com/images/20211226/1640519452254454.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)要求:用户名:长度要求6-18位,任意大小写英文、任意数字,除了@符号和空格以外的其他任意符号字符,开头只能是_或者字母 子域名[二级域名]:长度任意,符号只能包含_/-/. .顶级域名:长度在2-5,任意大小写英文 ![image.png](4)


    推荐阅读