Авто-вставка пустых строк в `tail -f`

Наличие файла журнала, такого как:

[DEBUG][2016-06-24 11:10:10,064][DataSourceImpl] - [line A...]
[DEBUG][2016-06-24 11:10:10,069][DataSourceImpl] - [line B...]
[DEBUG][2016-06-24 11:10:12,112][DataSourceImpl] - [line C...]

который находится под tail -f Мониторинг в режиме реального времени, можно ли автоматически вставить (с помощью команды мы передадим tail) "пустые строки" после, скажем, 2 секунд бездействия?

Ожидаемый результат:

[DEBUG][2016-06-24 11:10:10,064][DataSourceImpl] - [line A...]
[DEBUG][2016-06-24 11:10:10,069][DataSourceImpl] - [line B...]
---
[DEBUG][2016-06-24 11:10:12,112][DataSourceImpl] - [line C...]

(потому что между двумя последовательными строками разрыв больше 2 секунд).

2 ответа

Решение
awk -F'[][\\- ,:]+' '1'

Выше разделит поля на ], [, -, ,, а также :так, чтобы каждое поле было таким, как описано ниже:

[DEBUG][2016-06-24 11:10:10,064][DataSourceImpl] - [line A...]
 22222  3333 44 55 66 77 88 999  ...

Затем вы можете объединить некоторые поля и использовать их для измерения разницы во времени:

tail -f input.log | awk -F'[][\\- ,:]+' '{ curr=$3$4$5$6$7$8$9 }
                      prev + 2000 < curr { print "" } # Print empty line if two seconds 
                                                      # have passed since last record.
                                         { prev=curr } 1'

tail не имеет такой функции. Если вы хотите, вы можете реализовать программу или скрипт, который проверяет последнюю строку файла; что-то вроде (псевдокод)

previous_last_line = last line of your file
while(sleep 2 seconds)
    {
    if (last_line == previous_last_line)
        print newline
    else
        print lines since previous_last_line
    }

Два замечания:

  • это приведет к тому, что у вас не будет выхода в течение 2 секунд; вы можете чаще проверять последнюю строку и сохранять временную метку; но это требует больше кода...
  • это зависит от того, что все линии уникальны; что разумно в вашем случае; так как у вас есть метки времени в каждой строке
Другие вопросы по тегам