как регулировать логи с помощью awk - PullRequest
0 голосов
/ 23 января 2019

У меня есть инструмент, который иногда приводит к похожей строке результата. Однако эти строки не совсем одинаковы, но могут рассматриваться как одна. Поэтому мне нужно было проверить, есть ли пять журналов подряд и, если они есть, вывести «это повторный журнал». Это необходимо сделать на основе последовательности, а не содержания, поскольку могут быть незначительные различия. Я пытаюсь разрешить 5 отдельных полных сообщений и 6-е на палатах должны быть замаскированы как "повторено"

Журналы выглядят следующим образом, реальные журналы имеют очень длинный текст, для простоты использовали это

 -->echo "$x"
09:09:02 a  aa1
09:09:03 a aa2
09:09:04 a aa3
09:09:05 a aa4
09:09:06 a aa5
09:09:07 a ssf
09:09:08 a s2
09:09:09 a 243
09:09:10 a 21
09:09:11 a 12
09:09:12 a 21
09:09:13 a 32
09:09:14 a 21
09:09:15 a 12
09:09:16 b 21
09:09:17 b 12
09:09:18 b 12
09:09:19 a 12
09:09:20 a 32
09:09:21 a 32
09:09:22 a 21
09:09:23 a 11
09:09:24 a 23
09:09:25 a 32
09:09:26 a 32
09:09:27 b 21
09:09:28 b 21
09:09:29 b 1
09:09:30 b 1
09:09:31 b 32
09:09:32 b 23
09:09:33 b 21
09:09:34 b 2
09:09:35 b 1
09:09:36 b 3
09:09:37 b 4
09:09:38 b 5
09:09:39 b 6
09:09:40 b 7
09:09:41 b 8
09:09:42 c 9
09:09:43 c 0
09:09:44 c 9
09:09:45 c 8
09:09:46 c 5

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

09:09:02 a aa1
09:09:03 a aa2
09:09:04 a aa3
09:09:05 a aa4
09:09:06 a aa5
09:09:07 above message is repeated
09:09:08 above message is repeated
09:09:09 above message is repeated
09:09:10 above message is repeated
09:09:11 above message is repeated
09:09:12 above message is repeated
09:09:13 above message is repeated
09:09:14 above message is repeated
09:09:15 above message is repeated
09:09:16 b 21
09:09:17 b 12
09:09:18 b 12
09:09:19 a 12
09:09:20 a 12
09:09:21 a 32
09:09:22 a 32
09:09:23 a 21
09:09:24 above message is repeated
09:09:25 above message is repeated
09:09:26 above message is repeated
09:09:27 b 21
09:09:28 b 21
09:09:29 b 1
09:09:30 b 1
09:09:31 b 32
09:09:32 above message is repeated
09:09:33 above message is repeated
09:09:34 above message is repeated
09:09:35 above message is repeated
09:09:36 above message is repeated
09:09:37 above message is repeated
09:09:38 above message is repeated
09:09:39 above message is repeated
09:09:40 above message is repeated
09:09:41 above message is repeated
09:09:42 c 9
09:09:43 c 0
09:09:44 c 9
09:09:45 c 8
09:09:46 c 5

Я пытаюсь сгруппировать их по 5, но ничего не печатается

echo "$x" |awk '{input=$2;next}{if(input==$2)c=c+1;if(c<=5)print $0 ;print "above message is repeated"}'

1 Ответ

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

Согласно комментарию OP '2-й столбец Input_file уже отсортирован. Не могли бы вы попробовать следующее.

awk '
prev!=$2{
  count=0
}
{
  ++count
}
count>5{
  print $1,"above  message is repeated....."
  next
}
1
{
  prev=$2
}' Input_file


РЕДАКТИРОВАТЬ: Добавление решения в соответствии с комментариями и хорошей продукцией Tiw на тот случай, если кому-то понадобится распечатать, из каких времен, к каким временам нам нужно количество повторений, затем попробуйте выполнить следующее.

awk '
prev!=$2 && prev{
    if(count>5){
      print "Time stamp FROM " start " to " prev_time " Above message repeated " value_count " times."
    }
    count=value_count=start=prev_time=""
}
{
    ++count
}
{
    prev=$2
    prev_time=$1
}
count>5{
    start=start?start:$1
    value_count++
    next
}
1
'  Input_file

Вывод вышеуказанного кода будет следующим:

09:09:02 a  aa1
09:09:03 a aa2
09:09:04 a aa3
09:09:05 a aa4
09:09:06 a aa5
Time stamp FROM 09:09:07 to 09:09:15 Above message repeated 9 times.
09:09:16 b 21
09:09:17 b 12
09:09:18 b 12
09:09:19 a 12
09:09:20 a 32
09:09:21 a 32
09:09:22 a 21
09:09:23 a 11
Time stamp FROM 09:09:24 to 09:09:26 Above message repeated 3 times.
09:09:27 b 21
09:09:28 b 21
09:09:29 b 1
09:09:30 b 1
09:09:31 b 32
Time stamp FROM 09:09:32 to 09:09:41 Above message repeated 10 times.
09:09:42 c 9
09:09:43 c 0
09:09:44 c 9
09:09:45 c 8
09:09:46 c 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...