READ-BY-LINE.

Обсуждение программ nnCron и nnCron LITE

Re: READ-BY-LINE.

Postby Morituruz » Sat, 04 Apr 2015, 01:14

SeMa wrote:Если найдено соответствие шаблону/вхождению, то из следующих определённых (по номеру относительно найденного шаблона) строк извлечь текст по другому шаблону или из определённых позиций. Как это можно реализовать с помощью сабжа или другим способом?

Это скорее задача для регулярных выражений.
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: READ-BY-LINE.

Postby elos » Sun, 05 Apr 2015, 00:06

Пример привести можешь? А то что-то тяжело понять...
elos
 
Posts: 667
Joined: Tue, 25 Apr 2006, 11:15

Re: READ-BY-LINE.

Postby VoidVolker » Sun, 05 Apr 2015, 08:41

Регулярное выражение для построчной обработки текста:
Code: Select all
S" /(.*?)(\x0D\x0A)|$/" RE-ALL
    ." Founded string: " $1 TYPE CR
;RE-ALL
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: READ-BY-LINE.

Postby SeMa » Sun, 05 Apr 2015, 12:54

задача для регулярных выражений
я в курсе 8)

elos wrote:Пример привести можешь? А то что-то тяжело понять...

Пишется лог. Каждый раз при его обновлении выхватывается дописанный кусок и парсится. Например,
Code: Select all
ТЕКСТ
...
ТЕКСТ
ТЕКСТ                        ВХОЖДЕНИЕ#1               ТЕКСТ

ТЕКСТ
ТЕКСТ
------+-------------+---+---+------+------------+------------+---+------
ТЕКСТ                               ШАБЛОН#1     ШАБЛОН#2
ТЕКСТ  ШАБЛОН#3                     ШАБЛОН#4     ШАБЛОН#5

ТЕКСТ
...


При нахождении ВХОЖДЕНИЕ#1 этой строке присваивается №1 (например), отсчитывается, скажем, 6-ю строку, ищем ШАБЛОН#1 и ШАБЛОН#2. В 7-й ищем ШАБЛОН#3, ШАБЛОН#4, ШАБЛОН#5.
И дальше найденные ШАБЛОНЫ используем.
Примерно так.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: READ-BY-LINE.

Postby Morituruz » Sun, 05 Apr 2015, 14:35

SeMa wrote:я в курсе 8)

Так если в курсе, то либо сами делайте регулярку, либо выкладывайте реальный лог, чтобы кто-нибудь сделал за вас. VV уже подсказал направление.
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: READ-BY-LINE.

Postby SeMa » Sun, 05 Apr 2015, 15:43

Пример привёл, реальный не могу :(
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: READ-BY-LINE.

Postby Morituruz » Sun, 05 Apr 2015, 17:57

Ну удачи вам в собственных изысканиях :-) Можете глянуть на мой мониторинг nncron лога, может пригодится.
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: READ-BY-LINE.

Postby VoidVolker » Sun, 05 Apr 2015, 18:49

Code: Select all
GLOBAL-STRING-LIST: strings
USER strNum
USER strCounter

USER-CREATE s1 2 CELLS USER-ALLOT
USER-CREATE s2 2 CELLS USER-ALLOT
USER-CREATE s3 2 CELLS USER-ALLOT
USER-CREATE s4 2 CELLS USER-ALLOT
USER-CREATE s5 2 CELLS USER-ALLOT
: parseFile
    ." start" CR
    \ Инициализируем переменные
    strings LIST-FREE
    strNum OFF
    strCounter OFF
    S" " s1 2!
    S" " s2 2!
    S" " s3 2!
    S" " s4 2!
    S" " s5 2!
    \ Создаем список строк
    S" E:/r.txt" FILE S" /(.*?)(\x0D\x0A)|$/" RE-ALL
        $1 strings!
        $1 S" ВХОЖДЕНИЕ#1" SEARCH IF    \ Ищем строку
            strCounter @ strNum !         \ Запоминаем номер строки
        THEN 2DROP
        strCounter 1+!                  \ Увеличиваем счетчик
    ;RE-ALL
    strNum @ 5 + strings#@                  \ Получаем строку по смещению
    2DUP
    S" ШАБЛОН#1" SEARCH IF s1 2! ELSE 2DROP THEN
    S" ШАБЛОН#2" SEARCH IF s2 2! ELSE 2DROP THEN

    strNum @ 6 + strings#@                  \ Получаем строку по смещению
    2DUP 2DUP
    S" ШАБЛОН#3" SEARCH IF s3 2! ELSE 2DROP THEN
    S" ШАБЛОН#4" SEARCH IF s4 2! ELSE 2DROP THEN
    S" ШАБЛОН#5" SEARCH IF s5 2! ELSE 2DROP THEN
   
    s1 2@ TYPE CR
    s2 2@ TYPE CR
    s3 2@ TYPE CR
    s4 2@ TYPE CR
    s5 2@ TYPE CR
   
    ." end" CR
;

Результат (SEARCH захватывает всю строку до конца и она вся запоминается):
Code: Select all
ШАБЛОН#1     ШАБЛОН#2
ШАБЛОН#2
ШАБЛОН#3                     ШАБЛОН#4     ШАБЛОН#5
ШАБЛОН#4     ШАБЛОН#5
ШАБЛОН#5
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: READ-BY-LINE.

Postby SeMa » Mon, 06 Apr 2015, 17:02

VoidVolker, спасибо!
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Previous

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 1 guest