Linux/Unix Shell Scripting - Problema script con las secuencias de escape en un grep

   
Vista:

Problema script con las secuencias de escape en un grep

Publicado por Misura (3 intervenciones) el 23/08/2012 20:44:56
Hola,

tengo problemas al hace el siguiente script, que me urge bastante :'-(

Necesito encontrar en un directorio lleno de ficheros, el fichero con extensión .c o .cpp que sea el programa principal, pudiendo distinguirlo porque, en este caso, contendrá la secuencia ' main(' (con un espacio en blanco antes de la eme).

Para buscar los posibles ficheros candidatos con esa extensión ejecuto la orden:

candidatos=$(find . -maxdepth 1 -type f -name "*.c" -o -name "*.cpp" )



Ahora, entre ese listado de posibles ficheros que puedan el principal, lo recorro para ir haciendo un grep a cada uno de ellos para buscar si contiene la línea ' main('

for fich in $candidatos
do
contenido=$(grep -l ' main(' $fich)
if [ -n contenido ] ; then
echo "En este fichero encontre el main " $fich
fi
done


El problema me surge en que no me hace bien el test de "if [ -n contenido ] ya que no sale nulo, sino que a veces sale algún caracter de escape. Puede que un retorno de carro.

Por ello, no sé cómo distinguir si el fichero sobre el que se hace el grep es el que contiene el main o no lo contiene.

¿Podríais echarme una mano, por favor?
Millones de gracias!!!! :-D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema script con las secuencias de escape en un grep

Publicado por xve (253 intervenciones) el 23/08/2012 21:18:37
Hola Misura, lo puedes hacer todo en una sola instrucción...

1
grep ' main(' $(find . -maxdepth 1 -type f -name "*.c" -o -name "*.cpp")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema script con las secuencias de escape en un grep

Publicado por Misura (3 intervenciones) el 24/08/2012 00:48:55
Muchísimas gracias!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar