Sistema Operativo ALDOS
Dezoft

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

 Índice > Todo acerca de Linux > Programación y desarrollo Nuevo tema Publicar Respuesta
 script para renombrar palabras dentro de un documento
Tema anterior Tema siguiente
   
al-serv
Publicado en 16/06/11 09:15 (Leído 2140 veces)  

Miembro Activo
Forum User

Inscrito: 01/03/08 Publicaciones: 635
País:Cataluña
Hola!

quiero crear un script para que me busque y reemplace una palabra por la otra

es útil para la configuración de mis servidores ya que por ejemplo, cuando configuro sendmail hay varios archivos que hay que poner el dominio.com pues con un solo comando busque dentro del documento la palabra dominio.com y la cambie por nuevodominio.com

algo con el editor vi o nano o algo pero que lo haga automáticamente, le indico el /etc/mail y que a partir de allí todo lo que encuentre dentro del documento lo reemplace... hay algún comando milagroso???? Sonrisa
 
Perfil Sitio Web
 Citar
Polo23
Publicado en 17/06/11 10:00  

Participa poco
Forum User

Inscrito: 27/06/09 Publicaciones: 17
Si los archivos a modificar son muy similares podrías usar DIFF mas PATCH

mira, podrías hacer la siguiente prueba, Crea dos archivos a.c y b.c con los siguiente contenidos:

PHP Formatted Code

---a.c---
#include <stdio.h>


int main(){
       
        char mensaje[] = "Hola Mundo v1";
        printf("Mensaje: %s\n", mensaje);
return 0;
}
 


PHP Formatted Code

---b.c---
#include <stdio.h>


int main(){
       
        char mensaje[] = "Hola Mundo v2";
        printf("\tMensaje: %20.20s\n", mensaje);
        printf("\t\t\tSaludos...\n" );
return 0;
}
 


podría decirte que es el mismo código fuente pero en versión 1 y 2, ahora hagamos un diff de los dos archivos del siguiente modo:

PHP Formatted Code

$ diff -uN a.c b.c
--- a.c 2011-06-17 16:34:01.000000000 -0500
+++ b.c 2011-06-17 16:35:41.000000000 -0500
@@ -3,8 +3,9 @@
 
 int main(){
       
-       char mensaje[] = "Hola Mundo v1";
-       printf("Mensaje: %s\n", mensaje);
+       char mensaje[] = "Hola Mundo v2";
+       printf("\tMensaje: %20.20s\n", mensaje);
+       printf("\t\t\tSaludos...\n" );
 return 0;
 }
 


Lo anterior es parecido a los archivos para parchar el kernel o algún otro código. bueno en fin, hay que redireccionar dicha salida aun archivo:

PHP Formatted Code
$ diff -uN a.c b.c > up-b.patch


creamos el archivo up-b.patch, que contendrá los parches para crear un archivo similar a b.c

entonces podemos parchar a.c y veremos como tendrá el código de b.c

PHP Formatted Code
$ patch a.c up-b.patch


entonces al hacer cat sobre a.c veremos que se ha parchado, si queremos que ciertas cosas no se cambien podemos eliminarlas del archivo .patch pero puede ser un poco mas tedioso :-p

X-D bueno digo, si lo único que quieres es hacer un vulgar cambio de palabras, podemos usar el siguiente:

PHP Formatted Code
---file-lista-palabras---
a A
b1 b9
n1 MM
 


PHP Formatted Code
FILE=file-lista-palabras

for i in $(cat ${FILE}| awk '{print $1}' )
do
   N_W=$(grep -w ${i} ${FILE} | awk '{print $2}' )
   sed -i 's/'${i}'/'${N_W}'/g' a.c
done



bueno algo así, X-D Saludos.
 
Perfil
 Citar
Joel Barrios Dueñas
Publicado en 17/06/11 11:57  

Admin
Site Admin

Inscrito: 17/02/07 Publicaciones: 1743
País:Mexico
PHP Formatted Code
perl -pi -e 's/dominio1.com/dominio2.org/g' /cualquier/archivo/de/texto/simple
 
Perfil Sitio Web
 Citar
al-serv
Publicado en 20/06/11 07:36  

Miembro Activo
Forum User

Inscrito: 01/03/08 Publicaciones: 635
País:Cataluña
hmmm perfecto, si que ha funcionado si!! Sonrisa es lo que estaba buscando!! muchisimas gracias!!
 
Perfil Sitio Web
 Citar
Contenido generado en: 0,81 segundos Nuevo tema Publicar Respuesta
 Todas las horas son UTC. Hora actual 08:05 .
Tema normal Tema normal
Tema persistente Tema persistente
Tema cerrado Tema cerrado
Nueva publicación Nueva publicación
Persistente con nueva publicación Persistente con nueva publicación
Cerrado con nueva publicación Cerrado con nueva publicación
Ver publicaciones anónimas 
Usuarios anónimos pueden publicar 
Se permite HTML Filtrado 
Contenido censurado