Shell之正则表达式

Posted 热心群众

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]匹配任意一位非小写字母

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)

以上是关于Shell之正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

shell编程之正则表达式详解

Shell编程三剑客之grep

shell脚本编程之正则表达式(扩展正则表达式sed)

shell编程之正则表达式

shell编程之正则表达式

shell之正则表达式