【linux】函数grep正则表达式匹配邮箱地址
这个问题是看了很多文章总结而得,还没有了解shell编程的朋友们可以来看看,自己的一些见解,欢迎指出错误和不足。话不多说,我们直接进入主题!
如何直接用命令匹配邮箱地址?
首先我们要知道常见的邮箱格式:
1) 邮箱必须有一个@
2) 邮箱@前缀由数字或字母开头,即 [a-zA-Z0-9]@
3) 邮箱@前缀2由多个字母、数字、短横线-、下划线_、英文句号.组成,即 [a-zA-Z0-9][a-zA-Z0-9-._]+@ (+表示重复1到多次)
4) 邮箱@后缀由两级或三级域名组成,其中每个域名中间由英文句号“.”隔开, 而每级域名都是由字母或数字组成,即@([a-zA-Z0-9]+.[a-zA-Z0-9]{1,2}+$,{}表示作为一个整体重复1到2次
接下来我们进行实操,先利用vi手动新建一个文件email.txt,存两个邮箱地址,一个合格另一个不合格,后续用以验证正则表达式。
【root@localhost ~】vi email.txt ##输入i后就可以手动输入你想要的内容 ##完成后ESC + :+ wq 保存退出
查看一下当前的email.txt内容
接下来需要注意的是,grep 支持三种正则表达式引擎,分别用三个参数指定:
在这里我们要接触到扩展正则表达式,当使用grep函数时采用egrep 和 grep -E都可以
【root@localhost ~】egrep -n [a-zA-Z0-9._]+@[a-zA-Z0-9._]+.[a-zA-Z0-9]{1,3} email.txt ##-n 表示输出该行号
结果如下,
多输入几个地址进行测试
简单的邮箱地址基本可以检测成功,希望这篇文章能对你有所帮助~
ps:不是很明白为什么我的[a-zA-Z0-9._]加上短横线 - 会报错超出范围,求大佬答疑解惑!
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
【C语言】变量及强制类型转换