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之正则表达式的主要内容,如果未能解决你的问题,请参考以下文章