На перле было бы быстрее, да. Но я им не особо владею, поэтому мне сподручней на баше, php либо на Си, если задачка похитрее и на скорость. regex на сях тоже рулит. Конечно можно показать пару приёмов. Но обучать в данном случае, извините, не моё кредо. Например, надо найти все сообщения, в которых есть приатаченные PDF'ы:
Метаданные из PDF'ов можно вытащить через pdfinfo, конвертировать в текст содержимое PDF'а -- pdftotext. Обе тулзы входя в GNU popler-utils. Полученный текст фильтруется обычным grep'ом.
Конвертировать в текст всевозможные DOC/XLS/RTF можно через unoconv -- питоновский скрипт, входящий в LibreOffice/OpenOffice. Для грубой обработки его достаточно. Если нужно более точно, включая всевозможные встроенные фреймы с текстом тоже вытащить, unoconv надо использовать для промежуточного конвертирования в ODS/ODT, а их уже обрабатывать собственным парсером -- это ведь обычный ZIP с файлами XML. Зная стандарт ODF, можно вытащить всё что угодно. Но т.к. обработка пакетная в цикле, я использую свою надстройку с тулзой timeout. Ибо после нескольких десятков успешных операций офис/unoconv начинает тупить, авторам баг известен.
Обрабатывать почтовые сообщения тоже не особо сложно, если знаете RFC. Опять же полно готовых библиотек и утилит. Например, для PHP есть php-mime-mail-parser. Короче, скрипт можно написать на баше, пхп, пёрле, питоне и вообще к чему больше душа лежит. :)
спасибо за развернутый ответ. Я просто как-то мучался с решением, как парсить XLS файлы, используя С/С++. Т.к. задача была вторична, то забросил, сейчас вспомнил и задался вопросом)))
(no subject)
Date: 2012-02-14 06:09 am (UTC)(no subject)
Date: 2012-02-14 06:32 am (UTC)Курите "регулярные выражения" и будет вам щасте.
(no subject)
Date: 2012-02-14 07:10 am (UTC)(no subject)
Date: 2012-02-14 08:44 pm (UTC)grep -iE '^Content\-Type\: application\/pdf' *.eml | cut -f1 -d: | sort -u
Метаданные из PDF'ов можно вытащить через pdfinfo, конвертировать в текст содержимое PDF'а -- pdftotext. Обе тулзы входя в GNU popler-utils. Полученный текст фильтруется обычным grep'ом.
Конвертировать в текст всевозможные DOC/XLS/RTF можно через unoconv -- питоновский скрипт, входящий в LibreOffice/OpenOffice. Для грубой обработки его достаточно. Если нужно более точно, включая всевозможные встроенные фреймы с текстом тоже вытащить, unoconv надо использовать для промежуточного конвертирования в ODS/ODT, а их уже обрабатывать собственным парсером -- это ведь обычный ZIP с файлами XML. Зная стандарт ODF, можно вытащить всё что угодно. Но т.к. обработка пакетная в цикле, я использую свою надстройку с тулзой timeout. Ибо после нескольких десятков успешных операций офис/unoconv начинает тупить, авторам баг известен.
Обрабатывать почтовые сообщения тоже не особо сложно, если знаете RFC. Опять же полно готовых библиотек и утилит. Например, для PHP есть php-mime-mail-parser. Короче, скрипт можно написать на баше, пхп, пёрле, питоне и вообще к чему больше душа лежит. :)
(no subject)
Date: 2012-02-15 08:22 am (UTC)Я просто как-то мучался с решением, как парсить XLS файлы, используя С/С++. Т.к. задача была вторична, то забросил, сейчас вспомнил и задался вопросом)))