Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Ув. коллеги, стоит задача анализировать текстовый лог файл с помощью Perl, я в нем не шарю, нид хелп. Файл с именем 1.txt, постоянно наполняется (появляются новые строки), данные разделены пробелами, надо анализировать только один блок, при совпадении этого блока в строке - отсылать мыло. Пример файла 1.txt 1111 22222222 333 1 - 0 - 7676 - jkh.sd hd/3242.dfs 7777 655 12 lkjsd 98676 askdhajk 1231 321 lkjxcv 9323 dfsf 56464 sdfsdfs - - - 123111 dfsf 222121 (и так далее) Необходимо, при совпадении блока, например, номер 11 (то есть в первой строке - это значение "7777", во второй "-") со значением, например "1111" отсылалось уведомление на почту, все остальыне блоки анализировать не надо. Еще, ситуация такая, необходимо помнить старые значения, то есть анализировать только новые строки с последнего визита скрипта. Как-то так, задача в несколько строк, но не могу сообразить, регулярные выражения меня убиваю, подмогните плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 19:45 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Простите, речь шла про блок номер 12, но в общем это не принципиально, ключевой момент, что анализировать один блок, все строки и после только новые с последующим уведомлением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 19:48 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
В принципе, подобный анализ однострочником на awk можно реализовать. Вроде не слишком сложно. Еще не понятно, как скрипт должен узнать, на которой строке он остановился в прошлый раз - где-то в отдельном файле хранит номер последней проверенной строки, или между запусками скрипта в файл добавляется строго определенное к-во строк (тогда можно читать/проверять только последние N+1 строк), что-то другое? Что делать, если в проверяемых строках будет не одно, а несколько изменений? Что делать, если файл очищен (в файле меньше строк, чем было в прошлый визит)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 01:45 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
vkle, спс за овтет, я так понимаю, что можно использовать якорь, то есть если где-то есть якорь - начинать с него, если нет, начинать с начала, второй вариант - можно менять/удалять совпадения, то есть вместо найденого ставть "OK" или "FOUND" и все, и каждый раз прогонять логи (хотя это конечно нихрена не оптимально, а логов будет хватать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 18:08 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Kushtymя так понимаю, что можно использовать якорь, то есть если где-то есть якорь - начинать с негоВ смысле... вносить изменение в существующий файл? Надеюсь, я ошибся. Kushtymа логов будет хвататьОпс! Можно озвучить предполагаемые объемы файла? Как насчет ротации логов? Гхм... Попробую предложить такой вариант, конечно, если это не противоречит каким-то другим требованиям... При наличии ротации можно парсить только файл text.log.1 - последний полный срез. А сам парсинг запускать сразу после ротации. Таким образом, проблема запоминания строки исчезает автоматически. Последнее предыдущее значение (необходимое для анализа первой строки) брать из последней строки файла text.log.2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 22:12 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Kushtym, если 1.txt файл постоянно наполняетс я, то есть, открыт другим процессом на запись, сомнительно, что удастся поиметь к нему доступ перл-скриптом для нанесения метки - якорь , да и зачем, проще использовать свой файл с меткой - номером последней удачной строки. а вот и однострочник, но отображенный в 10 строках [ скопировать - вставить - запустить. если под unix. а если под windows, поменять местами двойные и одинарные кавычки и вытянуть всё в одну строку ] Код: perl 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Код: coco 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 07:08 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
vkle, volodin661, да, вы правы наверное с ситуацией на счет наполнения, наверное это неправильно. volodin661 персональное благодарю за скрипт, еще не запускал, буду осваивать, результат выложе тут (под результатом имеется и отправка почты и определение актуального лога для анализа) этот парсер будет запускаться многократно в течении дня, каждый новый день - новый лог. У меня еще промежуточный микро вопрос (после разбора скорей всего отпадет, но все же), не будет ли никаких проблем, при одновременном запуске 10 таких скриптов, но нацеленных на разные логи? то есть не будет ли проблем с темповыми файлами, сами темповые файлы будут оставаться? - уважаемые коллеги, на все эти вопросы я буду искать ответы в процессе разбора Еще раз спасибо - вы мне дали точку опоры, дальше будет проще :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 15:59 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Kushtymпарсер будет запускаться многократно в течении дня, каждый новый день - новый лог.Не понятно. Под новым логом Вы имеете в виду новую порцию данных для обработки? Kushtymне будет ли проблем с темповыми файлами, сами темповые файлы будут оставаться?Из ниоткуда временные файлы не берутся. Будете создавать их и не будете удалять - тогда и будут оставаться. Если временные файлы используются, то нужно предусмотреть механизмы их удаления. Kushtymне будет ли никаких проблем, при одновременном запуске 10 таких скриптов, но нацеленных на разные логи?Не должно быть, если только не потребуется одновременный доступ на запись к какому то одному файлу. Впрочем, это тоже отчасти решаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 16:29 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
ув. vkle, тут были больше вопросы по скрипту господина volodin661, который писал volodin661да и зачем, проще использовать свой файл с меткой - номером последней удачной строки. vkleИз ниоткуда временные файлы не берутся. Будете создавать их и не будете удалять - тогда и будут оставаться. Если временные файлы используются, то нужно предусмотреть механизмы их удаления я вот про эти файлы темповые ("свои файлы") спрашивал vkleНе понятно. Под новым логом Вы имеете в виду новую порцию данных для обработки? скрипт должен парсить каждые 10 минут один лог в течении одних суток, лщог при этом постоянно наполняется, со сменой суток создается новый лог - который этот же скрипт будет парсить следующие сутки на текущем этапе я просто пытаюсь запустить скрипт (про одну строку - это было образное выражение), действуя по инструкии господина volodin661 я пока получю болт, естественно скорей всего дело в моих руках...я уже по разному пытался со скобочками играть perl -ane ' BEGIN {sub get_anchor { open F, '<', '_tmp_' || return 0; return <F>; } sub set_anchor { open F, '>', '_tmp_' or die $!; print F $.; close F; } sub sendmail { print qq/Found $tag in line $.\n/; } sub action { set_anchor; sendmail } our $tag = '500'; our $anchor = get_anchor;} do { action and exit } if ( $F[11] eq $tag ) and ( $. > $anchor ); ' 1.txt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 16:59 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Kushtymя вот про эти файлы темповые ("свои файлы") спрашивалЭтот файл я бы не назвал временным. Он же содержит информацию для следующего запуска скрипта. Вполне такой рабочий и нужный файл. Kushtymскрипт должен парсить каждые 10 минут один лог в течении одних сутокОтметки времени в логе не предусмотрены? Если метки есть, то можно на них ориентирваться. Конечно, при таком варианте появляется опасность пропустить что-то в случае, когда запуск скрипта не удался по какой-то причине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 17:16 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Kushtym, ага.. значит всё-таки под Windows. однострочник оставляем в покое, в данном случае это было больше эстетство, а не практическая необходимость Код: coco 1. 2. 3. Код: perl 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 19:26 |
|
||
|
PERL анализ тектового файла
|
|||
|---|---|---|---|
|
#18+
Kushtym я просто пытаюсь запустить скрипт (про одну строку - это было образное выражение), действуя по инструкии господина volodin661 я пока получю болт просто невнимательно прочитал инструкцию г-на Volodin661 , который откровенно и не стесняясь в выражениях указал, что в случае Уиндус двойные и одинарные кавычки меняются местами. ( це отличие интерпретаторов ком. строки unix-shell и windows-cmd ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 19:45 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=84&tid=1462682]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 360ms |

| 0 / 0 |
