Ваш вопрос плохо определен в ряде способов. Что вы подразумеваете под «чистым»? Что вы подразумеваете под «телом»?
Если вы имеете в виду, как я могу отправить только тело RFC5322, а не заголовки, на принтер, который легко:
:0b
* ^Subject:.*bb
| lpr -Pbbprinter
Обратите внимание на b
флаг там после :0
, что ограничивает сферу применения действие только к телу.
Но с MIME вам часто не требуется тело RFC5322 (то есть все после последней строки заголовка), а скорее только одна часть из MIME-сообщения. Вам нужно будет придумать какой-то анализ, какая часть для извлечения, но если у вас есть, что он по-прежнему легко:
:0
* ^Subject:.*bb
| parse-out-preferred-mime-body-part | lpr -Pbbprinter
(Мы не используем :0b
здесь потому, что правильный MIME синтаксический анализатор должен иметь доступ к началу RFC5322 заголовки Уровня, тоже.)
Если по «чистой» вы имеете в виду что-то другое, или кроме того, вы должны уточнить ваш вопрос, но общая идея что-то вроде
:0
* ^Subject:.*bb
| cleanupbody | lpr -Pbbprinter
где cleanupbody
может выполнять все, что вы имеете в виду под " очистить "(вычеркнуть проклятие слова? Исправить общие опечатки? Более или менее одно и то же?)
Наконец, просто для обертывания вы можете в принципе подключиться к сценарию оболочки любой сложности (хотя к тому времени, когда он охватывает более нескольких строк, вам, вероятно, лучше всего перемещать все или его части к отдельному сценарию, возможно, с собственным набором тестов).
:0
* ^Subject:.*bb
| parse-out-preferred-mime-body-part | \
sed -e 's/grammer/grammar/g' -e 's/seperate/separate/g' \
-e 's/definately/definitely/g' | \
lpr -Pbbprinter
Второй двоеточие является избыточным и вызывает сообщение об ошибке «Не удалось определить неявный файл блокировки». См. Http://partmaps.org/era/procmail/mini-faq.html#locking – tripleee