regex - 删除电子邮件地址前的文字
问题描述
我有数十万条主要是杂乱无章的行,其中包含电子邮件和其他数据。出现在电子邮件地址之前的所有内容基本上都是无用的,并且可以清除/删除/删除/切片 - 不确定术语是否正确,抱歉。
我倾向于将 Cygwin 用于这些类型的事情,但一直在苦苦挣扎。这是我通常倾向于使用的电子邮件正则表达式:
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}
输入:
Dog:email@email.com:cat
Pab:email1@hotmail.com:dog
cat:horse:email@jenga.de:cat
bike:michael:david:xenon@gmail.com:cat
inter@outlook.com:bob
期望的输出:
email@email.com:cat
email1@hotmail:dog
email@jenga.de:cat
xenon@gmail.com:cat
inter@outlook.com:bob
解决方案
您的正则表达式工作正常:
$ awk 'match($0,/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/){print substr($0,RSTART,RLENGTH)}' file
email@email.com
email1@hotmail.com
email@jenga.de
xenon@gmail.com
inter@outlook.com
$ awk 'match($0,/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/){print substr($0,RSTART)}' file
email@email.com:cat
email1@hotmail.com:dog
email@jenga.de:cat
xenon@gmail.com:cat
inter@outlook.com:bob
由于您使用的是 cygwin,因此您拥有 GNU awk,它具有“就地”编辑功能:
awk -i inplace 'script' file
但当然要先测试。
推荐阅读
- ruby-on-rails - 如何将 before_action 与 :unless 和 params 一起使用
- angular - 订阅()在Angular 5中返回未定义而没有控制台
- laravel-5 - 在远程桌面上开发没有互联网的 laravel 项目
- kubernetes - 在 GCP 中的 kubernetes 集群上配置 Zabbix 监控工具
- python - 在 tkinter 中生成密码时缺少位置参数“pw_len”
- javascript - 一页上有几个倒计时
- angularjs - 如何在 AngularJS 中获取文件扩展名?
- linux - ssh_exchange_identification:读取:对等方重置连接;Docker 中的 ubuntu
- linux-kernel - Yocto 将 initramfs / initrd 映像安装到 Raspberry Pi
- checkbox - 使用 Apps 脚本在 Google 表格中放置复选框