Bienvenido(a) a Alcance Libre 06/09/2025, 02:24
|
![]() |
Índice del foro > Todo acerca de Linux > Programación y desarrollo |
![]() ![]() |
![]() |
al-serv |
|
|||||||
![]() ![]() ![]() ![]() ![]() Miembro Activo ![]() Estado: desconectado ![]() 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???? ![]() |
|||||||
|
||||||||
Polo23 |
|
|||||||
![]() ![]() ![]() ![]() ![]() Participa poco Estado: desconectado ![]() 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.patchcreamos 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.patchentonces 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-palabrasfor 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. |
|||||||
|
||||||||
Joel Barrios Dueñas |
|
|||||||
![]() ![]() ![]() ![]() ![]() Admin ![]() Estado: desconectado ![]() Identificado: 17/02/07 Mensajes: 1761 Localización:Mexico |
|
|||||||
|
||||||||
al-serv |
|
|||||||
![]() ![]() ![]() ![]() ![]() Miembro Activo ![]() Estado: desconectado ![]() Identificado: 01/03/08 Mensajes: 641 Localización:Cataluña |
hmmm perfecto, si que ha funcionado si!!
![]() |
|||||||
|
||||||||
Contenido generado en: 0.31 segundos |
![]() ![]() |
Todas las horas son CST. Hora actual 02:24 . |
|
|