Я запускаю diff с опцией -p, поэтому на выходе будет указано имя функции, в которой произошло каждое изменение. Есть ли аналогичная опция для grep? Если нет, какую другую команду я мог бы использовать вместо этого?
Вместо -B, чтобы показать фиксированное количество строк контекста, которые непосредственно предшествуют совпадению, мне хотелось бы, чтобы для совпадения предшествовала только одна строка с самой последней сигнатурой функции, однако многие строки назад были в файл. Если параметр, который я ищу, был -p, вывод может выглядеть так, например:
$ cat foo.c
int func1(int x, int y)
{
return x + y;
}
int func2(int x, int y, int z)
{
int tmp = x + y;
tmp *= z;
return tmp;
}
$ grep -p -n -e 'return' foo.c
1-int func1(int x, int y)
3: return x + y;
--
5-int func2(int x, int y, int z)
9: return tmp;