Как сопоставить несколько строк, начинающихся с TAB, и строку до 1-го в группе?

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

Журналы выглядят так:

time=1 time=2 time=3 at com.test.com.... at com.test.com.... at com.test2.com.... time=4 time=5 time=6 time=7 time=8 time=9 at org.badstuff.com... at org.badstuff.com... at org.badstuff.com... time=10 time=11 

Линии, начинающиеся с начала с символом TAB, поэтому их можно легко сопоставить.

Как я могу вытащить эти трассировки стека из этого файла и пару строк перед первой трассировкой стека каждый раз? Я нахожусь на Mac, но предпочел бы общее решение, которое работает на Mac / Linux, если это возможно, поскольку я должен работать на обоих довольно часто.

Итак, из приведенного выше примера я вытащил следующие

 time=2 time=3 at com.test.com.... at com.test.com.... at com.test2.com.... time=8 time=9 at org.badstuff.com... at org.badstuff.com... at org.badstuff.com... 

2 Solutions collect form web for “Как сопоставить несколько строк, начинающихся с TAB, и строку до 1-го в группе?”

Просто используйте контекст контекста, -B перед контекстом или параметр -C ontext в grep , например, чтобы соответствовать вашему примеру:

 grep -B2 '^\t' file 

Используйте grep -B2 -P '^\t' logfile чтобы выбрать две строки перед каждым набором совпадений. Возможно, вам придется замаскировать разделитель групп «-», который вставлен между совпадениями.

Результаты

 $ grep -B2 -P '^\t' /tmp/t time=2 time=3 at com.test.com.... at com.test.com.... at com.test2.com.... -- time=8 time=9 at org.badstuff.com... at org.badstuff.com... at org.badstuff.com... 
  • UNIX - команда разбивать файл на несколько файлов со всеми строками для каждых 3 уникальных значений в столбце
  • Поиск шаблона между определенными линиями и номерами строк печати
  • подсчитывать строки, соответствующие строке в каждом подкаталоге, и их подкаталоги
  • Результаты кошки grep
  • Можно ли использовать grep lookaroud несколько раз?
  • Найти и заменить строки в текстовом файле на выходе из другого файла
  • Косая черта, не обнаруженная в команде «grep»
  • Прочитайте больший файл-A и найдите связанные строки во втором файле и создайте вывод
  • Найти путь, который имеет конкретную подкаталоги
  • Grep: неожиданные результаты при поиске слов в заголовке с man-страницы
  • Замена строки во всех файлах, найденных grep. Не могу заставить его работать
  • Linux и Unix - лучшая ОС в мире.