![]() |
массив из строк, поиск по строке
Добрый день.
Пытаюсь решить задачу по парсингу лог-файла с конца самого файла. Получилось поделить лог на строки и строки положить в одномерный массив. Вот только как произвести поиск по строке, которая лежит внутри ячейки одномерного массива? На примере: вот такой вариант работает (ищет точку входа в строку): Код:
z = " 2017-06-07 23:01 Пользователь sadfasdasd qwddsda dqwd sad qwdsad asd" Код:
z = my_arr(10) ' в данной ячейке лежит строка " 2017-06-07 23:01 Пользователь sadfasdasd qwddsda dqwd sad qwdsad asd" |
Проверь формат ячейки (as string ?). У меня твой пример работает.
Код:
y=InStr(1, my_arr(10), "польз", vbTextCompare) |
Цитата:
Цитата:
Цитата:
Цитата:
Упакуйте образец лог-файла в архив и приложите к сообщению. Опишите задачу. |
задача: есть лог от Cobian Backup, необходимо получить данные о успешном/не успешном резервном копировании и количестве ошибок (если есть). Задание может выполняться несколько раз за сутки, следовательно необходима самая последняя запись в txt (поэтому читаем лог снизу вверх). По завершении задачи будет запускаться данный скрипт (средствами Cobian).
нет никакого смысла использовать бд для такой простой задачи, не люблю плодить сущности. Для вашего "чушь" гифка по ссылке как это работает (точнее как не работает)GIF msgbox (TypeName(my_arr(9))) говорит что лежит строка Кусок лога имеет такой вид Код:
2017-06-07 18:10 -- вот таким скриптом получаю строки. В 9 элементе массива лежит строка "2017-06-07 23:01 Пользователь....". На количество переменных не обращайте внимания, Код:
Dim F, i, s, fn, FSO, ForReading, AllTxt, listLines, str, x, arr_Line, my_arr(), y, z, nStrok, SearchString |
По логу (ровно как и по самой постановке задачи) ничего не понятно: нужно извлекать данные из лога по какому критерию? На какие значения нужно опираться? Зачем каждую строку пихать в массив, чай ведь не экономный расход ресурсов?
|
Смотрите: в логах ищем строку "Задание "BackGTD" завершено. Ошибок:". При нахождении подстроки в элементе массива (InStr >0) начинаем работать со строкой и получать дату-время, количество ошибок и т.п., а это отправляется на zabbix.
Цитата:
|
Есть такая штука, RegExp называется. Открываете файл на чтение, читаете построчно, и если строкка соответствует шаблону регулярного выражения, извлекаете данные из подгрупп регулярки (дату, количество ошибок, обработанных файлов и дыр и пыр).
|
Толи лыжи не едут...
пытаюсь сделать проверку на чтении построчно Код:
Dim F, i, s, fn, FSO, ForReading, AllTxt, listLines, str, x, arr_Line, my_arr(), y, z, nStrok, SearchString |
дело было не в бобине, дело было в кодировке...
|
|
matson, Не понимаю, что Вы хотите в конце концов получить, но вот вариант (тестировал на файле, созданном на основе приведенного Вами текста):
Код:
File_In = "Z:\Box_In\Логфайл.log" |
Цитата:
|
Время: 11:18. |
Время: 11:18.
© OSzone.net 2001-