Что нового

[Данные, строки] Помогите с выковыриванием имён файлов из лога

Rjevsky

Чайник
Сообщения
102
Репутация
4
допустим в логе встречаются подобные строки:
2009-12-05 18:15:28 (4.79 MB/s) - `d:/test/post/in/msvcr80.dll.2' saved [626688]
2009-10-05 16:15:27 (4.75 MB/s) - `d:/test/post/in/libeay32.dll.2' saved [1036288]
2008-01-04 18:15:27 (6.76 MB/s) - `d:/test/post/in/inlog222.txt' saved [230762]
мне нужны имена файлов : msvcr80.dll.2, libeay32.dll.2, inlog222.txt

Плохо у меня с пониманием работы StringRegExp и подобных комманд, намучал вот такое безобразие. Работает, но выглядит както криво, может можно сделать элегантнее?

Код:
$y= StringRegExpReplace("2009-12-05 18:15:28 (4.79 MB/s) - `d:/test/post/in/msvcr80.dll.2' saved [626688]", "^.*/", "")
$x= StringRegExpReplace($y, "^.*'", "")
$z =StringReplace($y, "'" & $x, "")
MsgBox(0,"",$z)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 159
Репутация
2 329
Код:
$sRead = "2009-12-05 18:15:28 (4.79 MB/s) - `d:/test/post/in/msvcr80.dll.2' saved [626688]"
$sRet = StringRegExpReplace($sRead, ".*/(.*)'.*", "\1")

MsgBox(0, "", $sRet)
 
Автор
R

Rjevsky

Чайник
Сообщения
102
Репутация
4
В догонку помогите ещё имена повыковыривать и из этого лога:

-rw-rw-rw- 1 user group 3173 Sep 08 2008 04452F6E.key
-rw-rw-rw- 1 user group 258930 Jul 21 2008 08-08г.rar
-rw-rw-rw- 1 user group 1713664 Jul 21 2008 08-08г.xls
-rw-rw-rw- 1 user group 1440054 May 02 2008 1.bmp
-rw-rw-rw- 1 user group 419428 Aug 11 12:49 1.jpg
-rw-rw-rw- 1 user group 2687 Mar 02 11:33 1.rar
-rw-rw-rw- 1 user group 67 Oct 21 14:32 1111.ask
-rw-rw-rw- 1 user group 561 Jun 04 13:32 1111.reg
-rw-rw-rw- 1 user group 158720 Dec 12 2008 11мес.ppt
-rw-rw-rw- 1 user group 1171 Nov 13 2008 1932.dl
-rw-rw-rw- 1 user group 3424 Nov 14 2008 1933.dl
-rw-rw-rw- 1 user group 419348 Aug 11 12:51 2.jpg
-rw-rw-rw- 1 user group 6899 Apr 22 13:59 22.jpg
-rw-rw-rw- 1 user group 264192 Oct 14 2008 9мес.ppt
 

r35p3ct

Продвинутый
Сообщения
226
Репутация
60
Код:
$sRead = "-rw-rw-rw-   1 user     group      264192 Oct 14  2008 9мес.ppt"
$sRet = StringRegExpReplace($sRead, ".*\s(.*)\z", "\1")
ConsoleWrite($sRet & @LF)
 

e-Mike

Чайник
Сообщения
15
Репутация
1
У меня тоже с регэкспами не очень ;) поэтому обхожусь разрезкой.
Вот решение для первого лога:

Код:
$y= StringSplit("2008-01-04 18:15:27 (6.76 MB/s) - `d:/test/post/in/inlog222.txt' saved [230762]", "`'")   ; режем по любым апострофам
$x= StringSplit($y[2], "/")   ; вторую часть режем по слешам
$z =$x[$x[0]]   ; берем кусок с номером = количеству частей
MsgBox(0,"", $z)


а это для второго:

Код:
$y= StringSplit("-rw-rw-rw-   1 user     group      264192 Oct 14  2008 9мес.ppt", " ")   ; режем по пробелам (там наверное есть табы, но это неважно, лишь бы перед именем файла был пробел)
$z =$y[$y[0]]   ; берем кусок с номером = количеству частей
MsgBox(0,"", $z)
 
Верх