将电子邮件解析为唯一文本

时间:2012-03-21 17:47:35

标签: email indexing awk mbox

我有一个mbox格式的大邮箱。这是所有文章,因此标题信息不相关(日期除外)。

我想要的是获取我的大* .mbx文件并生成文本文件,其中文件名是每封电子邮件的主题,并删除所有标题。

我认为AWK可以用正则表达式做到这一点,但这种事情不是我的专业领域(更多的是gui人)。

我希望我可以将文件保存在硬盘驱动器上的磁盘空间更少,最后可以使用Google桌面搜索进行索引。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

这里的关键是将记录分隔符变量设置为空字符串。这将以“段落”模式读取文件。

awk -v RS="" '
    /^From / {
        # this $0 contains the email headers, grab the subject
        subject = "no subject"
        split($0, headers, /\n/)
        for (idx in headers)
            if (headers[idx] ~ /^Subject: /) {
                subject = headers[idx]
                sub(/^Subject: /, "", subject)
            }

        next
    }
    { print > subject}
' large.mbox

如果您的电子邮件具有相同主题,则邮件正文将连接到一个文件中。

我不希望看到大量的磁盘使用量。您将删除标题,但增加所需的磁盘块数。