![我可以在 notepad++ 和其他文本编辑器中过滤和排序电子邮件 ID 吗?](https://linux22.com/image/1430935/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%20notepad%2B%2B%20%E5%92%8C%E5%85%B6%E4%BB%96%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8%E4%B8%AD%E8%BF%87%E6%BB%A4%E5%92%8C%E6%8E%92%E5%BA%8F%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%20ID%20%E5%90%97%EF%BC%9F.png)
我有一个 txt 文件,里面有大约 20000 个电子邮件 ID。我想分别了解来自 gmail、yahoo、ymail、googlemail、aol、live、自定义域、gmx 和其他临时电子邮件的电子邮件数量。此外,我还需要过滤它们并按电子邮件域顺序对它们进行排序。如何使用 notepad++ 做到这一点?如果有任何其他程序比 notepad ++ 更容易做到这一点,请也参考它。
答案1
我会在 Excel 中执行此操作
将列表复制到 Excel 的 A 列。Excel 将允许您排序(并根据需要删除重复项)。
从那里,这个宏将执行此操作
Sub DoTheThing()
Range("C:D").Cells.ClearContents
Dim row As Integer
row = 1
Do While (Range("A" & row).Value <> "")
Dim emails() As String
emails = Split(Range("A" & row).Value, "@")
Dim domain As String
Dim i As Integer
'domain = emails(1) commented out. Use this line if you want to include .com or .net
domain = Split(emails(1), ".")(0) 'use this line if you want just the provider, such as GMAIL or Yahoo
Dim resultsRow As Integer
resultsRow = 1
Dim resultExists As Boolean
resultExists = False
Do While (Range("C" & resultsRow).Value <> "")
If (Range("C" & resultsRow).Value = domain) Then
Range("D" & resultsRow).Value = Range("D" & resultsRow).Value + 1 ' add 1
resultExists = True
End If
resultsRow = resultsRow + 1
Loop
If (resultExists = False) Then
Range("C" & resultsRow).Value = domain
Range("D" & resultsRow).Value = 1
End If
row = row + 1
Loop
End Sub
上述代码假设你的原始列表全部为小写
前后屏幕截图,显示提供商发生的情况
前
后