Разобрать письмо на уникальный текст - PullRequest
1 голос
/ 21 марта 2012

У меня большой почтовый ящик в формате mbox. Это все статьи, поэтому информация заголовка неактуальна (за исключением даты).

Я хочу взять мой большой файл * .mbx и создать текстовые файлы, в которых имя файла является темой каждого письма, а все заголовки удалены.

Я думаю, что AWK может делать это с помощью регулярных выражений, но такого рода вещи не относятся к моей области знаний (скорее, к графическому интерфейсу).

Я надеюсь, что смогу хранить файлы на своем жестком диске на меньшем дисковом пространстве и, наконец, смогу индексировать их с помощью Google Desktop.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 21 марта 2012

Ключом здесь является установка переменной разделителя записей в пустую строку. Это будет читать файл в режиме "параграфа".

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

Если у вас есть электронные письма с одинаковой темой, тела сообщения будут объединены в один файл.

Я бы не ожидал увидеть от этого значительную экономию использования диска. Вы удалите заголовки, но увеличите количество требуемых дисковых блоков.

...