Re: Регеспом к tcl помогите
Yuri Kozlov -> debian-russian@lists.debian.org @ Wed, 23 Feb 2005 01:10:23 +0300:
>>> YK> Привет всем.
>>> YK> Хочу обработать логи от dhcpd вида
>>> YK> Feb 18 08:14:56 dns dhcpd: DHCPDISCOVER from 00:02:b3:18:b6:7b via
>>> 172.20.61.1
>>> YK> Feb 18 08:14:46 dns dhcpd: DHCPDISCOVER from 00:02:b3:18:b6:00 via
>>> YK> 172.20.61.1: not authoritative for subnet
>>> YK> Написал что-то типа
>>> YK> set iMAC {00:02}
>>> YK> append exp {(.{15})} {.*?} {dhcpd:\ DHCPDISCOVER\ from\ }
>>> "($iMAC\.\*\?)" {\
>>> YK> via\ } {(.*?)$}
>>> YK> regexp -expanded $exp $i -> discDate MAC discGateway
>>
>>> YK> Но в некоторых строках(а в некоторых нет!) в discGateway кроме ip
>>> YK> пишется дополнительная информация.
>>> YK> Что добавить в регесп, чтобы эта информация тоже в переменную
>>> YK> засовывалась или чтобы писалось пустое значение в противном случае?
>>> {([0-9.]+)}. Если сам писал вышеупомянутое, то куда вставить -
>>>найдешь...
>> Спасибо, теперь получилось
>> append exp {(.{15})} {.*?} {dhcpd:\ DHCPDISCOVER\ from\ } "($iMAC\.\*\?)" {\
>> via\ } {([0-9.]+)} {(.*)$}
>> И последняя вещь, которую хочется сделать этим регеспом
>> чтобы в получившееся значение ": not authoritative for subnet"
>> не попадало двоеточие и пробел.
>>
YK> А сам доковырял:
YK> append exp {(.{15})} {.*?} {dhcpd:\ DHCPDISCOVER\ from\ } "($iMAC\.\*\?)" {\
YK> via\ } {([0-9.]+)} {($|:\ )(.*)$}
YK> Может можно покороче ? :)
Можно. У тебя все бэкслеши лишние, и из разных строчек ты его собираешь
совершенно зря.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
Reply to: