Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/11/2009, 06:37
Avatar de jmfp26
jmfp26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 162
Antigüedad: 21 años
Puntos: 2
Exclamación Respuesta: No me funciona el siguiente scrit de busqueda

Hola,

He investigado un poco y resulta que como yo tenia el scrit:

#!/bin/sh

read -p "Ingrese el texto que desea buscar: " texto1
echo ""
grep -r "$texto1" /home/ | awk -F: '{ print $1 }' > listado.txt
echo "Los archivos donde esta el texto buscado son: "
cat listado.txt
echo ""
contador=`cat listado.txt | wc -l`

if [ $contador = 1 ]; then
echo ""
echo "El texto \"$texto1\" fue encontrado $contador vez"
echo ""
else
echo ""
echo "El texto \"$texto1\" fue encontrado $contador veces"
echo ""
fi

read -p "Desea reemplazar el texto por otro? [y/n]: " N
case $N in
y)
read -p "Ingrese el texto nuevo: " texto2
for i in `cat listado.txt`
do
cat $i | sed -e s/"$texto1"/"$texto2"/g > $i
done
read -p "Desea buscar otro texto? [y/n]: " N
case $N in
y)
rm listado.txt
./$0;;
n)
rm listado.txt
(exit);;
esac;;
n)

read -p "Desea buscar otro texto? [y/n]: " N
case $N in
y)
rm listado.txt
./$0;;
n)
rm listado.txt
(exit);;
esac;;
esac

Lo que hace es que los ficheros que contengan la palabra que busco, los deja en blanco. Es como si limpiara de contenido los ficheros.
No me funciona. Y si ejecuto la siguiente linea:

sed -i 's/Hola/Adios/g' prueba.txt

Si funciona pero solo con el fichero prueba.

Por otro lado con esta orden también funciona a todos los ficheros con ese rango:

find . -name "*.txt" -exec sed -i 's/TEXTO1/TEXTO2/g' {} \;


Creo que el error esta en la linea:

for i in `cat listado.txt`
do
cat $i | sed -e s/"$texto1"/"$texto2"/g > $i
done

Pero no lo veo.

Alguien me puede ayudar.

Gracias

Última edición por jmfp26; 03/11/2009 a las 07:00