Получить содержимое файла из первого экземпляра в последний экземпляр некоторой произвольной строки

Как я могу просмотреть less из первого экземпляра какой-либо произвольной строки «foo» до последнего экземпляра?

Эта произвольная строка будет в большинстве строк журнала. Я не хочу делать grep "foo" bar.log | less grep "foo" bar.log | less потому что это не относится к каждой строке.

Допустим, файл

 1 Don't care about 2 Care about (foo) 3 Care about (foo) 4 Care about 5 Care about (foo) 6 Don't care about 

Мне интересно, как получить следующее в less то,

 2 Care about (foo) 3 Care about (foo) 4 Care about 5 Care about (foo) 

grep "foo" bar.log | less grep "foo" bar.log | less не будет работать, потому что он игнорирует строку 4, и это одно, о чем я забочусь.

Если у вас есть awk вы можете сделать:

 awk '/foo/{print b$0;b="";x=1;next} x{b=b$0"\n"}' bar.log | less 

Он буферизует все строки с момента последнего появления foo в переменной b .