Modificar texto en varios ficheros - SOLUCIONADO

Imagen de Adeptus24
0 puntos

Buenas,

Vereis, tengo que modificar una serie de palabras en varios ficheros de un componente gratuito de joomla, el caso es que puedo aislar los ficheros que contienen esa palabra... pero no se como hacer para que se modifique dentro de esos ficheros y se sobreescriba, ya que son varios... os dejo lo que tengo hasta ahora:

#!/bin/bash
echo -e "Introduce la palabra que quieres modificar: \c"
read modificar
echo -e "Introduce la palabra que la sustituira: \c"
read modificada
find /home/santiago/Escritorio/Jvehicles -type f | xargs grep $modificar > /home/santiago/Escritorio/Scripts/fichero.txt
cat /home/santiago/Escritorio/Scripts/fichero.txt | cut -d ":" -f 1

Con esto consigo la lista de los ficheros que contienen la palabra que teclee en el primer campo, luego he pensado en hacerle un "sed 's/$modificar/$modificada/g'" pero no me funciona con las variables creadas por el read...

Mi pregunta es como puedo hacer que se modifique en cada fichero que aisla el script en el fichero.txt y luego como hacer el sed con las variables de los read.

Aqui teneis el contenido del fichero.txt que se genera:

santiago@santiago-ubuntu:~/Escritorio/Scripts$ bash script_busca_fichero.sh 
Introduce la palabra que quieres modificar: Marca
Introduce la palabra que la sustituira: 
/home/santiago/Escritorio/Jvehicles/admin/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/admin/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/admin/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/admin/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/admin/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/admin/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/admin/views/products/tmpl/default.php
/home/santiago/Escritorio/Jvehicles/admin/views/jvehicles/tmpl/default_products.php
/home/santiago/Escritorio/Jvehicles/site/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/site/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/site/es-ES.com_jvehicles.ini
/home/santiago/Escritorio/Jvehicles/site/views/jvehicles/tmpl/default_products.php
/home/santiago/Escritorio/Jvehicles/site/helpers/product_pagelinks.php
/home/santiago/Escritorio/Jvehicles/site/helpers/product_pagelinks.php
/home/santiago/Escritorio/Jvehicles/site/models/jvehicles.php
/home/santiago/Escritorio/Jvehicles/site/models/jvehicles.php

un saludo y gracias!

Imagen de Adeptus24
+1
0
-1

Buenas,

De modo cutre tengo una semisolucion, solo necesito saber como hacer para que las variables que inicio arriba con los read se pasen al fichero02.txt, os dejo todo como va:

#!/bin/bash
echo -e "Introduce la palabra que quieres modificar: \c"
read modificar
echo -e "Introduce la palabra que la sustituira: \c"
read modificada
find /home/santiago/Escritorio/pruebacomponente -type f | xargs grep $modificar > /home/santiago/Escritorio/pruebacomponente/fichero.txt
cat /home/santiago/Escritorio/pruebacomponente/fichero.txt | cut -d ":" -f 1 > /home/santiago/Escritorio/pruebacomponente/fichero01.txt
cat /home/santiago/Escritorio/pruebacomponente/fichero01.txt | sed '/^\/h*/s//cat &/g' | sed '/^cat*/s/$/ \| sed "s\/$modificar\/$modificada\/g" \> ; &/g' > /home/santiago/Escritorio/pruebacomponente/fichero02.txt

cat /home/santiago/Escritorio/pruebacomponente/fichero02.txt | awk ' /cat/ {
print $1, $2, $3, $4, $5, $6, $2, $7
}' > /home/santiago/Escritorio/pruebacomponente/fichero.sh

#bash /home/santiago/Escritorio/pruebacomponente/fichero.sh

El resultado es el fichero.sh que contiene esto:

cat /home/santiago/Escritorio/pruebacomponente/fichero04.ini | sed "s/$modificar/$modificada/g" > /home/santiago/Escritorio/pruebacomponente/fichero04.ini ;
cat /home/santiago/Escritorio/pruebacomponente/fichero01.php | sed "s/$modificar/$modificada/g" > /home/santiago/Escritorio/pruebacomponente/fichero01.php ;
cat /home/santiago/Escritorio/pruebacomponente/fichero02.php | sed "s/$modificar/$modificada/g" > /home/santiago/Escritorio/pruebacomponente/fichero02.php ;
cat /home/santiago/Escritorio/pruebacomponente/fichero03.php | sed "s/$modificar/$modificada/g" > /home/santiago/Escritorio/pruebacomponente/fichero03.php ;

Como hago para que en lugar de poner $modificar y $modificada sea lo que escribo en las 2 preguntas superiores con el read?

Un saludo y gracias de antemano!

+1
0
-1
Imagen de Adeptus24
+1
0
-1

Buenas,

Bueno aunque nadie me haya respondido lo dejo por si alguien lo quiere:

#!/bin/bash
echo -e "Introduce la palabra que quieres modificar: \c"
read modificar
echo -e "Introduce la palabra que la sustituira: \c"
read modificada
find /home/santiago/Escritorio/Jvehicles -type f | xargs grep $modificar > lista.txt
cat lista.txt | cut -d ":" -f 1 > lista2.txt

perl -p -i -e "s/$modificar/$modificada/g" `cat lista2.txt`

rm lista.txt ; rm lista2.txt
+1
0
-1
Imagen de sebcas
+1
0
-1

Hey, me sirvio mucho.

Gracias.

+1
0
-1

Sebcas