Bienvenido(a) a Alcance Libre 06/09/2025, 02:24

Alcance Libre Foros

 Índice del foro > Todo acerca de Linux > Programación y desarrollo New Topic Post Reply
 script para renombrar palabras dentro de un documento
Tópico anterior Tópico siguiente
   
al-serv
 16/06/11 04:15 (Leído 2,544 veces)  

Miembro Activo

Estado: desconectado
Forum User

Identificado: 01/03/08
Mensajes: 641
Localización: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???? Smile
 
Profile Email Website
 Quote
Polo23
 17/06/11 05:00  

Participa poco

Estado: desconectado
Forum User

Identificado: 27/06/09
Mensajes: 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.
 
Profile Email
 Quote
Joel Barrios Dueñas
 17/06/11 06:57  

Admin

Estado: desconectado
Site Admin

Identificado: 17/02/07
Mensajes: 1761
Localización:Mexico
PHP Formatted Code
perl -pi -e 's/dominio1.com/dominio2.org/g' /cualquier/archivo/de/texto/simple
 
Profile Email Website
 Quote
al-serv
 20/06/11 02:36  

Miembro Activo

Estado: desconectado
Forum User

Identificado: 01/03/08
Mensajes: 641
Localización:Cataluña
hmmm perfecto, si que ha funcionado si!! Smile es lo que estaba buscando!! muchisimas gracias!!
 
Profile Email Website
 Quote
Contenido generado en: 0.31 segundos New Topic Post Reply
 Todas las horas son CST. Hora actual 02:24 .
Tópico normal Tópico normal
Tópico Pegado Tópico Pegado
Tópico bloqueado Tópico bloqueado
Mensaje Nuevo Mensaje Nuevo
Tópico pegado con nuevo mensaje Tópico pegado con nuevo mensaje
Tópico bloqueado con nuevo mensaje Tópico bloqueado con nuevo mensaje
Ver mensajes anónimos 
Los usuarios anónimos pueden enviar 
Se permite HTML Filtrado 
Contenido censurado