幽映每白日,清辉照衣裳。这篇文章主要讲述Shell之正则表达式相关的知识,希望能为你提供帮助。
@[toc](目录
一、正则表达式含义
- 通常用于判断语句中,用来检查某一字符串是否满足某一格式 二、正则表达式组成
- 正则表达式是由普通字符与元字符组成
- 普通字符包括大小写字母、数字、标点符号及一些其他符号
- 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
- 支持的工具:grep、egrep、sed、awk
\\ :转义字符,用于取消特殊符号的含义,例: \\!、\\n、\\$等
$ :匹配字符串结束的位置,例: word$、 ^$匹配空行
. :匹配除\\n之外的任意的一个字符,例: go.d、 g..d
- :匹配前面子表达式0次或者多次,例: good、 go.d
[^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)
推荐阅读
- Shell之正则表达式之(sortuniqtrcutspliteval命令)
- 如何使用 Ansible 配置 Vim并安装插件
- Intellij 插件 RestfulToolkit#yyds干货盘点#
- Shell编辑器之sed编辑器
- Python数据分析基础-3Python的日期和时间及其处理的常用方法
- shell 之awk编辑器
- Linux之find xargs
- Shell脚本之免交互(EOFExpect)
- JAVA SE—— 数组(详细!!!)