[eside-ghost] Bash Scripting: buscar string entre 2 patrones

STenyaK stenyak en gmail.com
Lun Mar 29 14:04:35 CEST 2010


Venga, aporto otra solución mas :-)

Para obtener solamente los includes locales (""), y sin problemas por
indentaciones, prueba esto:
grep "^\s*#include" $1 |grep '"' |sed "s/.*\"\(.*\)\..*/\1/g"

el primer grep caza los includes, aunque estén indentados
el segundo grep caza los includes que sean locales (comilla - doblecomilla -
comilla, por si no se lee bien xD)
la expresión regular fríe cerebros como de costumbre, y además, obtiene el
nombre de fichero sin extension (quita todo lo de antes de la doblecomilla,
y todo lo de después del punto)

Ojo con los includes que tengan dobles extensiones (#include "foo.bar.h") ,
o con subdirectorios (#include "foo/bar.src/baz.h").

2010/3/29 NoxWings <18dagarc en gmail.com>

> Aupa
>
> Estoy haciendo un pequeño script para generar mis propios makefiles (acabo
> de empezar con bash scripting), y estoy atascado intentando obtener los
> includes de los ficheros fuente. Por el momento he hecho esta función:
>
> *function searchIncludes*
> *{*
> * **if [ -e $1 ]; then*
> * **INCLUDE="#include"*
> * **FOUND=0*
> * **for i in `cat $1`; do*
> * **if [ $i = $INCLUDE ]; then*
> * **let** **FOUND=1*
> * **elif [ $FOUND -eq 1 ]; then*
> * **echo -e "$i \c"  # aqui obtener el string entre " y .h*
> * **let FOUND=0*
> * **fi*
> * **done*
> * **fi*
> *}*
> *
> *
> *$ searchIncludes scene.hpp*
> *<Ogre.h> <OgreFrameListener.h> "input.hpp" "debug.hpp"*
>
> Pero no consigo encontrar un comando para mostrar solo por pantalla el
> string que se encuentra entre la primera comilla y el ".h"
> de tal forma que la salida obtenida fuese:
> *input debug*
> *
> *
> *¿Alguna ayuda? *
> *Gracias*
> *
> *
> *David GM*
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>



-- 
Saludos,
    Bruno González

_______________________________________________
Msn/Jabber: stenyak AT gmail.com
ICQ: 153709484
http://www.stenyak.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20100329/eb487023/attachment.htm 


Más información sobre la lista de distribución eside-ghost