1

Тема: Вопрос : Типовая операция парсинга TXT файла

Всем привет!
Есть типовая операция парсинга тестового файла и поска в нем слов по маске. Все бы хорошо, но есть, возможно, не тривиальный вопрос : как начать поиск с конца файла?
Задача состоит в том, что периодически в файле появляются записи типа :
-rw-rw----    1 11315    10041    37921836 Nov 11 04:09 ***********.csv
и надо найти такое последнее, что дописывалось в файл.
С начала файла ищет без проблем и выводит все, что есть. Но надо именно последнее. Так же таких строк, последних, может быть несколько. Типа :
Tue Nov 11 04:12:01 MSK 2014
REMOTE SYSTEM: =================================================
-rw-rw----    1 11315    10041    37921836 Nov 11 04:09 ******.csv
-rw-rw----    1 11315    10041     1435144 Nov 11 04:09 **********.csv
-rw-rw----    1 11315    10041      314725 Nov 11 04:09 **********.csv
и строка с датой и временем так же нужна.

мой код : (тут есть лишнее, это мои вариации на разные мысли)

   

    Set WshShell = CreateObject("WScript.Shell")
       Set FSO = CreateObject("Scripting.FileSystemObject") 
'---------------------------------------------------------------------------------------------
    Set f = FSO.OpenTextFile("c:\get.log",1, False) 
    Set f1 = FSO.OpenTextFile("c:\get.txt" , 2, True) 

    word = ".csv"
        
boolFound = False

line = 0

        Do Until f.AtEndOfStream
            sw = f.ReadLine() 
            If InStr(1, sw, word) <> 0 Then
                boolFound = True 
                WScript.Echo "sw = " & sw
            End If
        Loop
            f.Close 
    f1.Close 

2

Re: Вопрос : Типовая операция парсинга TXT файла

как начать поиск с конца файла?

Никак. Текстовый файл — файл последовательного доступа. Максимум возможного — запоминать размер, хранить в реестре или в файле, при очередном чтении пробовать делать «TextStream Skip <Предыдущий размер>».

Озвучьте задачу полностью. Возможно, получится использовать ADO.

3

Re: Вопрос : Типовая операция парсинга TXT файла

А в чем проблема? Алгоритм простой
1. искать "что-то"
2. взять последнее

( 2 * b ) || ! ( 2 * b )

4

Re: Вопрос : Типовая операция парсинга TXT файла

Задача :
найти все вхождения в файл лога типа :

Tue Nov 11 04:12:01 MSK 2014
REMOTE SYSTEM: =================================================
-rw-rw----    1 11315    10041    37921836 Nov 11 04:09 **********.csv
-rw-rw----    1 11315    10041     1435144 Nov 11 04:09 ************.csv
-rw-rw----    1 11315    10041      314725 Nov 11 04:09 **************.csv
таких может быть несколько или сколько угодно много.

Взять последнюю запись и вывести (отправить почтой/смс, не важно) в виде, что нашел :
Tue Nov 11 04:12:01 MSK 2014
REMOTE SYSTEM: =================================================
-rw-rw----    1 11315    10041    37921836 Nov 11 04:09 **********.csv
-rw-rw----    1 11315    10041     1435144 Nov 11 04:09 ************.csv
-rw-rw----    1 11315    10041      314725 Nov 11 04:09 **************.csv

обязательно с предшествующими строками
Tue Nov 11 04:12:01 MSK 2014
REMOTE SYSTEM: =================================================

если есть вариант с запоминанием, то какой? хотя он довольно замороченный получатся. Есть варианты что-то попроще? Проблема в том, что файл с логом всегда дописывается. Если бы создавался всегда новый, то проблем таких бы не было.

5

Re: Вопрос : Типовая операция парсинга TXT файла

d_alexei пишет:

...
как начать поиск с конца файла?
...

d_alexei,

возможно, будет интересно:
Построчное чтение текстовых файлов с конца

6

Re: Вопрос : Типовая операция парсинга TXT файла

Rumata пишет:

А в чем проблема? Алгоритм простой
1. искать "что-то"
2. взять последнее

п.1 реализуем.
п.2 вопрос?

7

Re: Вопрос : Типовая операция парсинга TXT файла

Slav пишет:
d_alexei пишет:

...
как начать поиск с конца файла?
...

d_alexei,

возможно, будет интересно:
Построчное чтение текстовых файлов с конца

а есть примеры чтения файла с использованием массива?

8

Re: Вопрос : Типовая операция парсинга TXT файла

d_alexei, упакуйте образец реального лога в архив, выложите на RGhost. Укажите критерии отбора. Внятно объясните, что есть в Вашем понимании «последняя запись», ибо Вы копипастите одни и те же пять строк.

9

Re: Вопрос : Типовая операция парсинга TXT файла

Прошу прощения, лог весь выкладывать не буду, т.к. он объемный и ничего нового для понимания не даст.
Попробую объяснить еще раз, возможно не корректно написал ранее.
Задача :
есть файл с текстом :

Wed Nov 12 05:27:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Wed Nov 12 05:38:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Wed Nov 12 05:42:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Wed Nov 12 05:53:01 MSK 2014
REMOTE SYSTEM: =================================================
-rw-rw----    1 11315    10041    37910497 Nov 12 05:46 bpo1498_111114.csv
-rw-rw----    1 11315    10041     1433989 Nov 12 05:46 bpo1499_111114.csv
-rw-rw----    1 11315    10041      314713 Nov 12 05:46 bpo_vip111114.csv
Wed Nov 12 05:57:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Wed Nov 12 06:08:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Wed Nov 12 06:12:01 MSK 2014
Thu Nov 13 03:53:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Thu Nov 13 03:57:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Thu Nov 13 04:08:01 MSK 2014
REMOTE SYSTEM: =================================================
-rw-rw----    1 11315    10041    37379351 Nov 13 03:57 bpo1498_121114.csv
-rw-rw----    1 11315    10041     1433125 Nov 13 03:57 bpo1499_121114.csv
-rw-rw----    1 11315    10041      314763 Nov 13 03:57 bpo_vip121114.csv
Thu Nov 13 04:12:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Thu Nov 13 04:23:01 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Thu Nov 13 04:27:02 MSK 2014
REMOTE SYSTEM: =================================================
mget: *: no files found
mv: cannot stat `/bea/files/bpo/Output.tmp/*': No such file or directory
Thu Nov 13 04:38:01 MSK 2014


из данного текста мне надо взять только последний блок :
Thu Nov 13 04:08:01 MSK 2014
REMOTE SYSTEM: =================================================
-rw-rw----    1 11315    10041    37379351 Nov 13 03:57 bpo1498_121114.csv
-rw-rw----    1 11315    10041     1433125 Nov 13 03:57 bpo1499_121114.csv
-rw-rw----    1 11315    10041      314763 Nov 13 03:57 bpo_vip121114.csv

и отправить его по почте (как, я уже знаю). Обязательно так, как я описал последний блок. Т.е. строки с :
время + REMOTE SYSTEM + список полученных файлов.
Есть разные варианты работы с текстовыми файлами, но ни один мне не подходит.
Просьба помочь.
Спасибо!!!

10

Re: Вопрос : Типовая операция парсинга TXT файла

Может tail помежет. Для windows есть

Нас невозможно сбить с пути, нам пофигу куда идти.

11

Re: Вопрос : Типовая операция парсинга TXT файла

Прошу прощения, лог весь выкладывать не буду

Ну, а у меня нет желания и есть печальный опыт обсуждения сферического коня в вакууме.

т.к. он объемный

И сколь он занимает в архиве?

и ничего нового для понимания не даст.

Вы берётесь судить о том, даст ли сие что-то мне для понимания или нет? Ну, коль Вам виднее…

12 (изменено: d_alexei, 2014-11-14 14:49:04)

Re: Вопрос : Типовая операция парсинга TXT файла

Всем спасибо за ответы. Перечитал много инфы, что само собой полезно.
Но помогли решить задачу кардинально другим способом. На bash скрипте, на сервере, где лежит этот лог.
Может не в тему, но я отпишусь :

#!/bin/bash
egrep -B 2  "^[-r]+[-w]+[-x]+.*`date '+%b %d'`" /bea/getOW2BPO.log

может кому пригодится. На vbs у меня так и не получилось. Думаю, что рано или поздно я к этой теме еще вернусь. А пока так.

Всем привет!!!