@Alkado

Как сделать сравнение по .id?

Наваял следующий скрипт для парса логов...
(строки :put [/log get $sLasSta] и :put [/log get $sLasFin] присутствуют для общего понимания...):

{
:local sSta ("vpn-beeline: connecting...")
:local sFin ("vpn-beeline: connected")
:local sDatSta ([/log find where message=$sSta])
:local sDatFin ([/log find where message=$sFin])
:local sLenSta ([:len $sDatSta])
:local sLenFin ([:len $sDatFin])
:local sLasSta ([:pick $sDatSta ($sLenSta - 1)])
:local sLasFin ([:pick $sDatFin ($sLenFin - 1)])

:put $sLenSta
:put $sLenFin
:put $sLasSta
:put $sLasFin
:put [/log get $sLasSta]
:put [/log get $sLasFin]
:if ($sLasSta<$sLasFin) do={
:put Good}
}

Выдает он мне:
1
1
*c
*f
.id=*c;buffer=memory;message=vpn-beeline: connecting...;time=07:39:56;topics=l2tp;ppp;info
.id=*f;buffer=memory;message=vpn-beeline: connected;time=07:39:57;topics=l2tp;ppp;info
Script Error: cannot compare if array is less than array

Так вот, что-же этот гад не может сравнить *c и *f (значения для .id=*c и .id=*f).
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@Alkado Автор вопроса
Решение найдено.
Сперва отрезаем *:
(:local sLasStaNorm [:pick $sLasSta 1 [:len $sLasSta]])

потом превращаем полученную строку в 16ричный формат, просто добавив 0х к началу:
("0x$sLasStaNorm")
после этих манипуляций, все отлично начинает сравниваться.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы