You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ruby代码从含URL的列表中提取邮箱并保存至文件

太理解这种混杂数据的烦恼了!终端里用几个简单的命令就能快速把邮箱提取出来,我给你两个实用的方案,都是基于系统自带的工具,不用额外安装软件:

方案1:用 grep 提取邮箱(最省心的通用方案)

grep 是几乎所有类Unix系统(包括Linux、macOS)都自带的工具,用正则表达式精准匹配邮箱格式就行:

grep -E -o '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' 你的原始文件名.txt > 清理后的邮箱列表.txt
  • -E:启用扩展正则,让匹配规则更灵活
  • -o:只输出匹配到的邮箱内容,不会带出整行里的URL或其他垃圾内容
  • 后面的正则表达式覆盖了绝大多数标准邮箱格式(比如你提到的news@ydr.com这种完全匹配)
  • 把你的原始文件名.txt换成你实际的文件名称,清理后的邮箱列表.txt是保存结果的新文件

如果你的原始列表里有重复邮箱,想顺便去重,可以加个排序去重的管道:

grep -E -o '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' 你的原始文件名.txt | sort -u > 去重后的邮箱列表.txt

sort -u会自动排序并移除重复的邮箱条目。

方案2:用 awk 处理复杂行内容

如果你的原始文件里一行有多个邮箱/URL混杂的情况,awk可以逐字段检查,只挑出符合邮箱格式的内容:

awk '{for(i=1;i<=NF;i++) if($i ~ /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/) print $i}' 你的原始文件名.txt > 清理后的邮箱列表.txt

这个命令会遍历每行的每个字段,只输出完全符合邮箱格式的字段,自动跳过以http://、https://或www.开头的URL。

小提示
  • 可以先去掉命令末尾的> 文件名,直接在终端运行,预览提取结果,确认没问题再保存到文件
  • 如果你的邮箱有特殊格式(比如带引号,但标准邮箱一般不会),可以微调正则表达式,但上面的规则已经覆盖了99%的合法邮箱场景

内容的提问来源于stack exchange,提问作者Apane101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:39:48