03/11/2009, 06:37
|
| | | Fecha de Ingreso: diciembre-2003
Mensajes: 162
Antigüedad: 21 años Puntos: 2 | |
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 |