Утилита Slugger

Реализует программу сценария оболочки, которая обеспечивает следующие функции.

В качестве входных данных требуется файл журнала. Файл журнала содержит операторы журнала с отметкой сообщения, как показано сбоку.

Утилита перечисляет все действия, которые потребовали больше указанного времени. Время указывается в секундах из командной строки.

Пример входного файла журнала:

#<process id> <date time> <log level> <file name> <line number> <actual message>

1098 2007-02-28 15:23:09 WARN db_util.c 5928 Config file not found, using default values
1098 2007-02-28 15:23:09 INFO db_util.c 5908 Connecting to database
1098 2007-02-28 15:23:17 INFO db_util.c 5908 Connected to database
1098 2007-02-28 15:23:17 ERROR log_test.c 198 Unable to setup our satellite launch system
1098 2007-02-28 15:23:18 INFO log_test.c 198 Reconnecting to launch the satellite
1098 2007-02-28 15:23:21 INFO log_test.c 198 Reconnected. Initialize to launch the satellite.

Пример: Если утилита запускается с указанием указанного выше файла в качестве входных данных и 2 секунды порогового времени производительности, она должна выдать следующий результат.

Пример вывода:

1098 2007-02-28 15:23:09 INFO db_util.c 5908 Connecting to database
1098 2007-02-28 15:23:18 INFO log_test.c 198 Reconnecting to launch the satellite

Пока что я пробовал:

awk -F' ' '! /#.*$/ {print $3}' $1 | awk  'BEGIN{FS=OFS=", "}{t=$1" "$2; "date -d \""t"\"  +%s"|getline d; print $1,$2,d}' $1

Считывает столбец времени из входного файла журнала и преобразует его в метку времени unix.

-1
12.06.2017, 13:15
1 ответ

Я не думаю, что вам нужно перекодировать даты:

awk '{split($3, p, /:/); if (prev && (prev + 2) % 60 <= p[3]) {
      print line}; prev=p[3]; line=$0}' logfile
0
28.01.2020, 05:12

Теги

Похожие вопросы