advanced awk, raba, 06-Май-10, 14:01 [смотреть все]Как с помощью awk извлечь !ТОЛЬКО! те строки из файла, который появились 15 назад, если текущее время 13:42:00файл: >10:53:12 info: some info info: 192.168.1.1 > 192.168.2.1: information >12:13:09 info: some info info: 192.168.1.1 > 192.168.2.1: information >13:40:47 info: some info info: 192.168.1.1 > 192.168.2.1: information Я делаю так: > export curtime=`date "+%H:%M:%S" | gawk -F: 'res=(($1*3600)+($2*60)+$3) {print res}'`; gawk -F: 'logtime=(($1*3600)+($2*60)+$3); { if ( (result=ct-logtime) < "600" ) print $0," ",ct,"-",logtime,"=",result}' ct=$curtime file результат таков: >10:53:12 info: some info info: 192.168.1.1 > 192.168.2.1: information >10:53:12 info: some info info: 192.168.1.1 > 192.168.2.1: information 49360 - 39192 = 10168 >12:13:09 info: some info info: 192.168.1.1 > 192.168.2.1: information >12:13:09 info: some info info: 192.168.1.1 > 192.168.2.1: information 49360 - 43989 = 5371 >13:40:47 info: some info info: 192.168.1.1 > 192.168.2.1: information >13:40:47 info: some info info: 192.168.1.1 > 192.168.2.1: information 49360 - 49247 = 113 А нужно: >13:40:47 info: some info info: 192.168.1.1 > 192.168.2.1: information 49360 - 49247 = 113 |
- advanced awk, Andrey Mitrofanov, 14:23 , 06-Май-10 (1)
>!ТОЛЬКО! те строки из файла, который появились 15 назад, если текущее время 13:42:00 Руска языка не родная моя говорить с трудом заикание а писать вообще !КОШМАР!. >файл: >>10:53:12 info: some info info: 192.168.1.1 > 192.168.2.1: information >>12:13:09 info: some info info: 192.168.1.1 > 192.168.2.1: information >>13:40:47 info: some info info: 192.168.1.1 > 192.168.2.1: information Если время до 10 утра пишется с ведущим 0, ... Если на дату не обращаем внимания, ... Если постановка задачи, таки, "появились не более 15 минут назад", ... Если формат времени 24-х-часовой - с 00 до 23, ... то... мммм.. Я бы сравнивал время прямо как строку, примерно так: gawk '$1>=strftime("%T", systime()-15*60)' <file.txt Пожалуй, даже так: gawk 'BEGIN{tm=strftime("%T", systime()-15*60)}$1>=tm' <file.txt Не проверял, может, и не того чего-нибудь. >Я делаю так: >> export curtime=`date "+%H:%M:%S" | gawk -F: 'res=(($1*3600)+($2*60)+$3) {print res}'`; gawk -F: 'logtime=(($1*3600)+($2*60)+$3); { if ( (result=ct-logtime) < "600" ) print $0," ",ct,"-",logtime,"=",result}' ct=$curtime file man gawk -- рекомендую!
- advanced awk, raba, 14:31 , 06-Май-10 (2)
>Пожалуй, даже так: >gawk 'BEGIN{tm=strftime("%T", systime()-15*60)}$1>=tm' <file.txt > >man gawk -- рекомендую! ..А интересно Андрей, а не на родном русском, как бы вы говорили....но д'ладно! За ответ,спасибо, работает!
- advanced awk, Andrey Mitrofanov, 14:49 , 06-Май-10 (3)
>>Пожалуй, даже так: >>gawk 'BEGIN{tm=strftime("%T", systime()-15*60)}$1>=tm' <file.txt >> >>man gawk -- рекомендую! > >..А интересно Андрей, а не на родном русском, как бы вы говорили....Ну, как... Контролируя понимабельность и сложность синтаксических конструкций. Как то: короткими предложениями, используя простые обороты и понятные [мне] слова... "Месью! Же не манж па сис жур! Гибен зи мир битте ет вас копикс---" И да, думаю, на иностранном -- без практики -- сильно тормозил бы и заикался. >За ответ,спасибо, работает! Пожалуйста.
- advanced awk, raba, 15:53 , 06-Май-10 (4)
>"Месью! Же не манж па сис жур! Гибен зи мир битте ет >вас копикс---" >..Готино, кефи ме! Чао пич! ;)
- advanced awk, allez, 19:23 , 06-Май-10 (5)
>>"Месью! Же не манж па сис жур! Гибен зи мир битте ет >>вас копикс---" >> > >..Готино, кефи ме! Чао пич! ;) Хм, братушка-болгарин на огонек заглянул? :-)
|