226

Re: AHK: Регулярные выражения

А нужно именно 50 последних сорок, и именно «снизу вверх»?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

227

Re: AHK: Регулярные выражения

Да, именно снизу вверх и 50 строк, т.к. этот список мог пробиваться ранее и если читать больше строчек, то скрипт дойдет до устаревшего списка, определяя уже недействительные id.

228

Re: AHK: Регулярные выражения

FileRead, text, %path_log%

arr := []
Sort, text, F Reverse
Loop, parse, text, `n, `r
   arr.Push( RegExReplace(A_LoopField, ".*\[(\d+)].*", "$1") )
until A_Index = 50

MsgBox, % arr[1]

Reverse(a1, a2, offset)  {
    return offset
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

229

Re: AHK: Регулярные выражения

teadrinker, отлично, это подходит, спасибо.

230

Re: AHK: Регулярные выражения

А вы обновляемый лог файл периодически читаете?

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

231 (изменено: teadrinker, 2017-07-01 20:09:32)

Re: AHK: Регулярные выражения

Ну да, конечно не обязательно читать лог каждый раз сначала, достаточно запомнить позицию его окончания при чтении, и в следующий раз переходить прямо к ней:

FilePath := A_Temp . "\test.log"

text =
(
[17:36:30]  Max_Reelood[34] [тел: 454660]
[17:36:30]  Sara_Kinoshita[81] [тел: 589941]
[17:36:30]  Vadim_Ernestto[113] [тел: 901777]
[17:36:30]  Brabus_Binjo[148] [тел: 55329]
[17:36:30]  Dimas_Kozlov[252] [тел: 782006]
[17:36:30]  Jek_Savage[278] [тел: 752324]
[17:36:30]  Frank_Castello[371] [тел: 231541]
)

FileAppend, % text, % FilePath

oFile := FileOpen(FilePath, "r")
MsgBox,, Начальный текст, % oFile.Read()
pos := oFile.Pos
oFile.Close()

newText =
(

[17:36:30]  Nekit_Joker[437] [тел: 819062]
[17:36:30]  vasilia_harlamov[457] [тел: 499172]
[17:36:30]  Andrey_Derix[564] [тел: 221539]
)

FileAppend, % newText, % FilePath

FileRead, text, % FilePath
MsgBox,, Полный текст файла с добавленными строками, % text

; но можно перейти сразу к последней запомненной позиции
oFile := FileOpen(FilePath, "r")
oFile.Pos := pos
; только новый текст с обрезанным переносом строки
MsgBox,, Только новый текст, % Trim(oFile.Read(), "`r`n")

oFile.Close()
FileDelete, % FilePath

Достаточно сохранять значение pos от предыдущего чтения.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

232

Re: AHK: Регулярные выражения

Привет! С какой командой можно из первого получить второй вариант, — то есть, чтобы строки, начинающиеся на "F:\" копировались во все нижеследующие строки своей группы?


F:\eashp\c\exlibris\a\abashidze
<a href="p/t-abashidze-2652">
<a href="p/tamaz-abashidze-1254">
<a href="p/tamaz-abashidze-1252">
F:\eashp\c\exlibris\a\achttienribbe
<a href="p/achttienribbe-p-6915">
<a href="p/achttienribbe-p-6914">
<a href="p/achttienribbe-p-6913">
<a href="p/achttienribbe-p-6912">
<a href="p/p-achttienribbe-2230">
<a href="p/p-achttienribbe-2227">
<a href="p/p-achttienribbe-2224">
F:\eashp\c\exlibris\a\acket
<a href="p/acket-d-5760">
<a href="p/acket-d-5759">
<a href="p/acket-d-5758">
<a href="p/acket-d-5757">
<a href="p/acket-d-5755">

<a href="p/t-abashidze-2652">F:\eashp\c\exlibris\a\abashidze
<a href="p/tamaz-abashidze-1254">F:\eashp\c\exlibris\a\abashidze
<a href="p/tamaz-abashidze-1252">F:\eashp\c\exlibris\a\abashidze

<a href="p/achttienribbe-p-6915">F:\eashp\c\exlibris\a\achttienribbe
<a href="p/achttienribbe-p-6914">F:\eashp\c\exlibris\a\achttienribbe
<a href="p/achttienribbe-p-6913">F:\eashp\c\exlibris\a\achttienribbe
<a href="p/achttienribbe-p-6912">F:\eashp\c\exlibris\a\achttienribbe
<a href="p/p-achttienribbe-2230">F:\eashp\c\exlibris\a\achttienribbe
<a href="p/p-achttienribbe-2227">F:\eashp\c\exlibris\a\achttienribbe
<a href="p/p-achttienribbe-2224">F:\eashp\c\exlibris\a\achttienribbe

<a href="p/acket-d-5760">F:\eashp\c\exlibris\a\acket
<a href="p/acket-d-5759">F:\eashp\c\exlibris\a\acket
<a href="p/acket-d-5758">F:\eashp\c\exlibris\a\acket
<a href="p/acket-d-5757">F:\eashp\c\exlibris\a\acket
<a href="p/acket-d-5755">F:\eashp\c\exlibris\a\acket