найти разницу в подстроке метки времени в awk - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь добавить текст в вывод / var / log / messages всякий раз, когда метка времени между двумя последовательными журналами отличается, например:

предыдущий журнал: 00: 01: 5 9 и текущий журнал 00: 02: 0 0
или
предыдущий журнал: 00: 01: 4 9 и текущий журнал 00: 01: 5 0

над подстрокой временной метки, если она отличается в последовательном журнале, добавить некоторое сообщение к $0.

Вы можете выполнить команду ниже, она работает в течение 1 минуты, требуется в течение 10 секунд.

tail -f /var/log/messages |awk '{split($3,a,":");split($3,b,"");new_time=a[1]":"a[2]":"b[1]; if(prev_time==new_time) print $0; else print "10 Second group is over, starting new: "$0" "prev_time " "new_time }   {split($3,a,":");split($3,b,"");prev_time=a[1]":"a[2]":"b[1]}'

Требуемый результат - изменение вышеуказанной команды для печати того же сообщения в 10-секундном промежутке между журналами, в настоящее время выполняется в течение 1 минуты. Я использовал split () для захвата 'HH:MM:S ", а не" HH:MM:SS ", поэтому всякий раз, когда простые' HH:MM:S" и текущие 'HH:MM:S "различаются, выведите сообщение" 10 Second group is over, starting new: $0 ". Не уверен, что ошибка здесь. Короче говоря, в настоящее время он работает, когда меняется минута, он мне нужен, когда секунда меняется с 39 на 40 секунд или с 09 секунд на 10 секунд. НЕ 11 сек до 12 сек ЧЧ: ММ: S S, жирным шрифтом S необходимо изменить.

Пример строки:

Jan 23 15:09:54 foo bar
Jan 23 15:10:04 bla bla

1 Ответ

0 голосов
/ 24 января 2019

это общая идея:

$ for((i=35;i<45;i++)); do echo Jan 23 00:01:$i; done |  
  awk '{split($3,a,":"); print $0, (p!=(c=int(a[3]/10))?"<<<":""); p=c}'

Jan 23 00:01:35 <<<
Jan 23 00:01:36 
Jan 23 00:01:37 
Jan 23 00:01:38 
Jan 23 00:01:39 
Jan 23 00:01:40 <<<
Jan 23 00:01:41 
Jan 23 00:01:42 
Jan 23 00:01:43 
Jan 23 00:01:44 

Первая часть - это тестовые данные, сгенерированные для скрипта, так как вы предоставили недостаточно. Есть ложное совпадение первой строки, которое можно устранить с помощью условия NR>1, но я не думаю, что это критично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...