首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于解析来自许多文本文件的电子邮件地址的脚本

用于解析来自许多文本文件的电子邮件地址的脚本
EN

Stack Overflow用户
提问于 2019-03-20 01:05:12
回答 1查看 0关注 0票数 0

我有338个.log文件的集合。这些只是基本的文本文件,没有两个文件具有相同的文件名(但所有文件名都以“rrm-”开头)。以下是它们包含的数据示例:

Receiving message #1 : OK (4480 bytes)
From: <djerry@domain.com>
Subject: 2-303-468-02
Message-ID: <PRODVAPP21XvCsLCXPI0035acee@prod.domain.com>
Forwarding to "Some User" <someuser@somedomain.com> : OK

我需要一个脚本,一次打开一个文件,只解析“From:”行(可能是10行,可能是1000行),只提取<和>字符之间的电子邮件地址,并将输出写入a单个文本文件,每行一个电子邮件地址。剩下的数据我不在乎。我也不关心验证电子邮件地址。生成的文本文件如下所示:

djerry@domain.com
bob@domain.com
tom@blah.com
jerry@yada.com

我不是程序员,我只知道在尝试时如何破解。我甚至不知道我需要使用哪种软件/实用程序。我正在使用Windows 10计算机。也许是Powershell脚本?很抱歉这样一个n00b问题,我真的很讨厌因为不知道如何或能够谷歌获得一个简单的解决方案而感到愚蠢。感谢任何帮助!

EN

回答 1

Stack Overflow用户

发布于 2019-03-20 10:17:18

请尝试以下方法:

Select-String -Pattern '^From: .*?<(.+?)>' -Path rrm-* |
  ForEach-Object { $_.Matches.Groups[1].Value } > output.txt
  • ^From: .*?<(.+?)>发现与开头的行正则表达式(正则表达式)From:,并且捕获之间下文<>
    • .*?部分用于说明<...>封闭的电子邮件地址之前的实际名称,这是常见的; 例如,"Dana Jerry" <djerry@domain.com>

  • $_.Matches.Groups[1].Value 检索捕获的内容。
  • > output.txt 将结果保存到文件中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档