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

请求分析大规模邮件列表并提取排名前100的域名

提取邮件列表中频次Top100域名的实用方法

嘿,要处理大规模邮件列表提取Top100域名?这两个方法肯定能帮到你,一个是快速的命令行工具组合,另一个是灵活的Python脚本,按需选就行~

一、命令行快速处理(适合Linux/macOS环境)

如果你的邮件列表是空格分隔的文本(就像你给的示例那样),用几个基础命令就能快速搞定,全程不用写代码:

  1. 先把邮件拆成每行一个:把空格分隔的内容转换成每行一个邮件地址,方便后续处理
    tr ' ' '\n' < 你的邮件文件名.txt > emails_per_line.txt
    
  2. 提取域名部分:用awk以@为分隔符,取@后面的域名内容
    awk -F '@' '{print $2}' emails_per_line.txt > domains.txt
    
  3. 统计频次并取Top100:先排序、去重计数,再按次数降序排列,最后取前100条
    sort domains.txt | uniq -c | sort -nr | head -n 100
    
    解释一下:
    • uniq -c:统计每个域名出现的次数,前缀是次数
    • sort -nr:按数字逆序排序(次数多的排在前面)
    • head -n 100:只保留前100条结果

小提示:如果邮件列表里有重复的完整邮箱地址,想先去重再统计域名,可以在第一步之后加这行:

sort emails_per_line.txt | uniq > unique_emails.txt

然后用unique_emails.txt代替emails_per_line.txt做后续步骤就行。

二、Python脚本处理(适合定制化需求)

如果需要更灵活的处理(比如处理带特殊字符的邮箱、自动保存结果到文件、后续做更多分析),写个简单的Python脚本就很方便:

from collections import Counter

# 读取邮件列表文件(替换成你的文件名)
with open('emails.txt', 'r', encoding='utf-8') as f:
    content = f.read().strip()

# 分割成单个邮件地址(如果是逗号分隔,就把split()改成split(','))
emails = content.split()

# 提取域名,过滤掉格式不正确的邮箱(没有@的)
domains = []
for email in emails:
    if '@' in email:
        domain = email.split('@')[1]
        domains.append(domain)

# 统计域名频次,取前100
top_100_domains = Counter(domains).most_common(100)

# 打印结果
print("域名频次Top100:")
for rank, (domain, count) in enumerate(top_100_domains, start=1):
    print(f"{rank}. {domain}:{count}次")

# 保存结果到文件
with open('top_100_domains_result.txt', 'w', encoding='utf-8') as f:
    f.write("域名频次Top100:\n")
    for rank, (domain, count) in enumerate(top_100_domains, start=1):
        f.write(f"{rank}. {domain}:{count}次\n")

这个脚本的好处是:

  • 自动过滤掉格式错误的邮箱(没有@的)
  • 可以轻松调整分隔符(比如逗号、制表符)
  • 结果既可以打印到控制台,也能保存成文件方便后续查看

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:12:36