The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
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 -- рекомендую!
        >
        >..А интересно Андрей, а не на родном русском, как бы вы говорили....

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

        "Месью! Же не манж па сис жур! Гибен зи мир битте ет вас копикс---"

        И да,  думаю, на иностранном -- без практики -- сильно тормозил бы и заикался.

        >За ответ,спасибо, работает!

        Пожалуйста.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру