Я полагаю, что вы следующее:
Между «Test: Testcase» и «TestCase _. * Пройдено» поиск строки «foo».Напечатайте совпадающие строки, если есть совпадение.
Не могли бы вы просто сделать:
cat bigfile | grep -E '(foo|^Test: TestCase)'
Это не будет соответствовать вашему ожидаемому выводу идеально (например, «Нет совпадений» не будет напечатано - тампросто не будет совпадений), но это довольно близко и очень просто.
Если вам не нужны все тесты, но вы хотите посмотреть на один, это может сработать для вас:
cat file |
perl -ne '/^Test: Testcase start/ .. /Test case end/ and /foo/ and print'
Он будет искать foo
, но только между Test: Testcase start
и Test case end
.Если вы хотите включить начальную строку в вывод, используйте:
cat file |
perl -ne '/^Test: Testcase start/ .. /Test case end/ and /^Test: Testcase start|foo/ and print'