У меня есть файл журнала службы приложения, и я пытаюсь извлечь трассировку стека, созданную одним из его дочерних процессов. Трассировки стека имеют совершенно иной шаблон, чем обычные файлы журналов.
Обычные записи файла журнала веб-приложения:
2020-03-26 08:31:05.000 : INFO : (18582) : (SERVICE) : MSG_1234 : Process id 98765. Standard output and error:
Пример трассировки стека:
7f318820d000-7f318a106000 rwxp 00000000 00:00 0 [stack:10002]
7f318a106000-7f318a107000 ---p 00000000 00:00 0
Мне нужно извлечь следы стека, что я могу сделать. Проблема со следами стека состоит в том, что они выгружаются в обратном порядке. Каждый выгруженный блок упорядочен, но блоки выгружаются в обратном порядке.
Вот пример того, как я извлекаю блоки (ПРИМЕЧАНИЕ: шаблоны запуска и остановки находятся в одной строке):
echo "STOP message START
five
six
STOP message START
three
four
STOP message START
one
two
STOP message" | awk '/START/ {flag=1; next} flag; /STOP/ {flag=0}'
Это вывод:
five
six
three
four
one
two
STOP message
Хотя я хотел бы получить это:
one
two
three
four
five
six
Я могу жить с последним совпавшим "сообщением STOP" , но мне нужно, чтобы блоки были в порядке.