我有大约 300 封电子邮件(gmail),内容如下:
亲爱的 [姓名]
订单编号:123456789 购买者:[我需要的名字]
(废话又多了 26 行(总共 30 行))
我需要帮助的是如何将 gmail 的邮件本地保存为 .txt 以及如何从每个文本文件中导出第 4 行。我可以轻松运行 Replace 'Purchased by: ' 来删除它并仅保留列表中该行中的名称,但除此之外我没有任何线索
有任何想法吗?
答案1
以 MBOX 格式导出 Gmail 邮件(提示:https://support.google.com/accounts/answer/3024195?hl=en)并将其保存为 messages.txt
从以下位置获取 GNU Awk (gawk.exe)http://gnuwin32.sourceforge.net/packages/gawk.htm
将以下内容保存为 getnames.awk:
/^Order ID:.*Purchased by:/ {
sub("^.+ by: ","");
print;
}
将以下内容保存为 names2csv.awk:
/^Order ID:.*Purchased by:/ {
sub("^.*Order ID:[^0-9]*","");
sub("[^0-9]*Purchased by: ",",");
print;
}
现在您已经获得了上述脚本和消息,这将为您提供一个文本文件形式的姓名列表:
gawk -f getnames.awk messages.txt > names.txt
这将以 .CSV 文件格式获取订单 ID 和名称,适合在您最喜欢的电子表格软件中打开:
gawk -f names2csv.awk messages.txt > orders.csv
答案2
您可以直接从 Gmail 提取数据,解析它并使用 MsgExtract 将其保存到 Excel 表或其他格式(如 XML、CSV)。
在您的情况下,您应该定义一个 TextPart 字段并使用以下正则表达式仅提取括号 [] 之间的名称:
(?s)(?<=(by:.[))。+(?=])
例如,如果您想获取文本:“购买者:[我需要的名称]”请使用以下表达式:
(?s)已购买。+]
您可以通过以下链接了解有关 MsgExtract 中的正则表达式的更多信息:
http://docs.maildev.com/article/69-parse-email-data-using-regular-expressions
http://www.maildev.com/msgextract/
(免责声明,我是 MsgExtract 的作者)