У меня есть файл, debug.log
, из которого я хочу извлечь все строки, которые непосредственно предшествуют указанному шаблону.
Пример:
1 blabla
2 blabla
3 HERE THE IMPORTANT THING
4 HERE IT MATCHES MY PATTERN
5 blabla
6 ANOTHER IMPORTANT THING
7 PATTERN
5 blabla
Ожидаемый результат:
HERE THE IMPORTANT THING
ANOTHER IMPORTANT THING
С помощью следующей команды я могу извлечь номер строки, соответствующей моему шаблону
grep -n PATTERN debug.log |cut -f1 -d:
Результат
5
8
Теперь я хотел бы вычесть одно к каждому из этих чисел, и получить соответствующую строку с чем-то вроде:
sed -n 4p debug.log
sed -n 7p debug.log
Это получает мой ожидаемый результат.
Можно ли это автоматизировать, чтобы мне не приходилось запускать sed
вручную?