2015-10-20 18 views
0

Есть ли какой-либо трюк для grep в функциональный корпус с помощью имя функции? Кроме того, я бы хотел использовать regex вместо полного имени функции.Grep внутри тела функции по имени функции

Например,: В драйверах ядра Linux есть много функций с именем "xxx_probe". Итак, я хотел бы найти строку внутри всех этих функций.

+0

Я надеваю Не знаете каких-либо инструментов, которые позволят вам выполнять поиск внутри функции. –

+0

Я тоже;) Но я надеюсь, что существует какой-то магический трюк командной строки) –

+0

Я не думаю, что вы найдете что-нибудь greplike, но посмотрите на http://beyondgrep.com/more-tools/ для некоторых инструментов это может помочь. –

ответ

0

-A num вариант для grep может быть полезен. Он будет печатать num строк конечного контекста после сопоставления строк.

grep "xxx_probe(" -A after-context-num | grep "search-str" 
0

Вы можете вычленить функцию, которую вы ищете с помощью pcregrep:

pcregrep -M "(?s)int foo_probe.*?(?=^\}$)" somefile.c 

Это начать поиск с «Int foo_probe», а затем закончить его в следующей строке, которая начинается с «} ». (?s) рассматривает файл как одну строку, так что . соответствует новостям.

Оттуда, это достаточно легко трубы его на второй Grep:

pcregrep -M "(?s)int foo_probe.*?(?=^\}$)" somefile.c | grep something 

Я не знаю, что исходные тексты ядра файлы выглядят, поэтому, возможно, потребуется перенастройка ...

Смежные вопросы