Форум сайта python.su
Здравствуйте! В чём фокус - надо найти по регулярке часть текста в разных файлах. Проблема начинается, когда файл очень большой, например от 2 гб и выше. Поэтому помещать в оперативу не идёт. Читать построчно - тоже не идёт, ибо регулярки всякие бывают - может быть такой шаблон, что совпадёт кусок, который состоит из 50 строк, а то и более… Использовать grep хотелось бы, но этот скрипт должен работать и под виндой… Посмотрел исходники грепа, и алогритмы и прифигел немножко - вряд ли такое смогу запрогать )
В общем, подскажите, кто что может, буду премного благодарен.
Офлайн
вот сходу подумал о том что бы читать порциями и реализовывать “перектытие”, если что то отсекать повторяющиеся результаты регулярок…ну это так, в порядке бреда мыслей…
Офлайн
Master_Sergiusконкретный пример приведи
надо найти по регулярке часть текста в разных файлах
Офлайн
попробовать сделать LazyString (авто подгрузка) или заюзать grep
Офлайн
Насчёт примера, кратко изложу суть задачи.
Есть много разных програм, которые постоянно пишут в логи что-то… Ежедневно надо проверять эти логи на наличие разных кусков текста. И вот когда есть такие куски как
[144, 24]
Отредактировано Master_Sergius (Ноя. 18, 2013 12:13:36)
Офлайн
Master_Sergius
(а цифры могут быть разные), или “INFO: что-то + айпишник” или “ERROR: что-то + айпишник”, ну и так далее.
Офлайн
А что если Вам задуматься не над программой, которая парсит готовый лог, а замутить нечто такое, что этот лог заменяет? То есть теоретически Вы же можете направить вывод лога не в файл, а в программу? А программа, получая небольшие порции данных пусть их парсит каким-то методом в зависимости от того, откуда эти данные пришли.
Офлайн
Ну как так файл показать, это ж должно быть универсальное решение. Уточню суть задачи. Есть разные проги (чужие) и есть конкретные тесты (тоже чужие). То есть, грубо говоря, задача в целом - автоматическое тестирование программ. И вот парсить надо именно готовые логи. При этом, что для каждой проги разные куски искать, естественно все всегда искали регулярками. Только делали всё через греп, который вызывали через subprocess, а теперь появились и виндовые проги, и хотели тестить тем же модулем, но греп уже не идёт…
Офлайн
Master_Sergius
а теперь появились и виндовые проги, и хотели тестить тем же модулем, но греп уже не идёт…
C:\>cat 1.txt | grep -E xml <?xml version="1.0" encoding="windows-1251"?><BSDocument><TARIFFS><RECORD><Tarif fGUID>1</TariffGUID>
Офлайн
BudulianinЧто за чит? С линукса монтировать виндовый раздел? Это плохой вариант…
C:\>cat 1.txt | grep -E xml
Офлайн