2010-03-13 15 views

Respuesta

0

en el caso más simple,

grep -ER '^.*(.*);' file #find declaration. 

como definición, es un poco complicado si quieres obtener la definición completa. (es decir, desde la apertura de llaves hasta el cierre). Es posible que desee mostrar lo que desea obtener utilizando un archivo de ejemplo de C++

+0

Hola, ¿podría explicar qué hizo en detalle, cómo encontrar una declaración de nombre de función específica? Tu respuesta es muy difícil de entender. –

+1

, solo dice, agarra todo desde el principio hasta que encuentres un "(", luego cualquier cosa hasta que encuentre la llave final ")" más un punto y coma. Eso es solo para el caso más simple. Ej nombre de función (int arg1); – ghostdog74

+0

Utilicé este comando en [Mono project] (http://www.mono-project.com/Main_Page) y generó toneladas de resultados que no quiero. –

0

Si usted tiene la convención de que la definición de función se inicia en el comienzo de una línea, entonces usted puede utilizar:

find . -exec egrep '^fn' '{}' ';' >/dev/null -print 

si desea limitar a los encabezados, puede poner - nombre * .h antes del -exec

NB si quieres hacer esto mucho, mira las "etiquetas" y amigos disparando manteniendo un índice actualizado que sería más rápido en el futuro.

10

Pruebe ack, que es mucho mejor que grep. resaltado de color, las obras ...

$ ack funcion_name

Imprime todos los usos de function_name buscar de forma recursiva a través de los archivos de origen, también es lo suficientemente inteligente como para ignorar Svn y otros metadatos

0

Sé que la pregunta es demasiado antigua, creo que @ ghostdog74 responde muy interesante, pero se olvida de cómo encontrar la definición de la función.

inspirado en @ ghostdog74 Creo que esto podría ser el buen método:

grep -Hnre '^.*fct_return.*fct_name.*(.*).*{ 

Sólo dice, agarra todo, desde el principio hasta que encuentre el fct_return, entonces cualquier cosa hasta que encuentra fct_name la llave de apertura "(" luego cualquier cosa hasta que encuentre el corchete de cierre ")" y luego cualquier cosa hasta que encuentre "{"

Cuestiones relacionadas