2012-03-21 25 views
1

我有一個mbox格式的大郵箱。這是所有的文章,所以標題信息是不相關的(日期除外)。將電子郵件解析爲唯一文本

我想要的是帶上我的大型* .mbx文件並生成文本文件,其中文件名是每封電子郵件的主題,並且所有標題都被刪除。

我認爲AWK可以用正則表達式來做到這一點,但這種事情並不是我的專業領域(更多的是gui人)。

我的希望是,我可以將文件保留在硬盤上的磁盤空間更小,並且最終可以使用Google桌面搜索進行索引。

任何幫助表示讚賞。

回答

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 

如果您的郵件具有相同主題,郵件正文將被連接成一個文件。

我不希望看到大量的磁盤使用量節省。您將刪除標題,但增加所需的磁盤塊數量。

+0

感謝您的快速響應。我將腳本保存爲script.sh,並嘗試使用awk -f script.sh運行它,並返回語法錯誤,其中一個指向空字符串之前的等號。 (在RS =「」它指向=)你能告訴我我做錯了什麼嗎?我正在使用Gawk for windows,因爲我只有Windows 7筆記本電腦可用。再次感謝! – user1284084 2012-03-21 22:03:13

+0

在這種情況下,刪除'-v RS =「」'選項並將'BEGIN {RS =「」}'放在awk腳本中。 windows命令提示符可能與它混淆了。 – 2012-03-21 23:37:42

+0

如果你想要一個窗口框unixy命令,請查看cygwin.com – 2012-03-21 23:38:48

相關問題