grep
не может легко выбрать, сколько показать матч, если он растягивается на несколько строк; есть только возможность указать фиксированное количество строк контекста до или после матча.
Если вам нужны пешеходы, возможно, попробуйте что-то вроде этого простого скрипта Awk.
find . -type f -exec awk '/getService/ || more {
print FILENAME ":" NR ":" $0; more = ($0 ~ /\.[ \t]*$/) }' {} +
Это просто проверяет, является ли последний непробельный символ точкой, и если да, выбирает также следующую строку (и) для печати.
Если ваши требования менее скромны, парсер для языка программирования, используемого в эти файлы, вероятно, путь к go. Если ваши требования лишь незначительно менее скромны, возможно, подход Awk можно растянуть на чуть-чуть больше.
(Оболочка find
потому, что у Awk нет опции -r
для обхода дерево каталогов.)