Извлечение журналов между двумя временными метками - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь извлечь все журналы между двумя отметками времени. Некоторые строки могут не иметь отметки времени, но я хочу, чтобы эти строки были включены - я хочу, чтобы каждая строка, которая попадает под две отметки времени, была включена в извлеченные журналы.

Метка времени начала или окончания может отсутствовать в журнале, но я хочу, чтобы была извлечена каждая строка между этими двумя метками времени.

Моя структура меток времени в журнале выглядит так: [4/1/19 9:57:05:083 EDT] blah blah

Команда awk, которую я написал, выбирает строки, содержащие только метку времени, и пропускает все остальные строки между ними.

PFB команда, которую я написал:

awk -v from="11:00:38" -v to="11:50:36" '$2>=from && $2<=to && $1 == "\[4/1/19"' SystemOut.log

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Вот как начать - создайте буквенно-цифровую / сопоставимую временную метку из ваших входных данных:

$ awk -F'[[/: ]' '{cur = sprintf("20%02d/%02d/%02d %02d:%02d:%02d:%03d", $4,$2,$3,$5,$6,$7,$8); print cur, $0}' file
2019/04/01 09:57:05:083 [4/1/19 9:57:05:083 EDT] blah blah

Теперь просто сравните это со значениями from и to:

$ awk -v from='2019/04/01 09:45' -v to='2019/04/01 10:20:13' -F'[[/: ]' '
    { cur = sprintf("20%02d/%02d/%02d %02d:%02d:%02d:%03d", $4,$2,$3,$5,$6,$7,$8) }
    (cur >= from) && (cur <= to)
' file
[4/1/19 9:57:05:083 EDT] blah blah

Еслидата вас не волнует, просто не включайте ее при создании cur и указании from и to.

0 голосов
/ 02 апреля 2019

Если предположить, что from_time_string и to_time_string являются шаблонами совпадений для ваших временных отметок, будут напечатаны все строки между экземплярами from_time_string и to_time_string:

awk '/from_time_string/{flag=1}/to_time_string/{flag=0;}flag' SystemOut.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...