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
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
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
doneEl 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


0