Foros del Web » Programación para mayores de 30 ;) » Programación General »

sustituir en archivo NO linea por linea

Estas en el tema de sustituir en archivo NO linea por linea en el foro de Programación General en Foros del Web. Saludos a todos, despues de tanto buscar no he encontrado nada para solucionar mi problema, el asunto es el siguiente: Quiero remplazar una cadena por ...
  #1 (permalink)  
Antiguo 15/10/2008, 22:54
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
sustituir en archivo NO linea por linea

Saludos a todos,


despues de tanto buscar no he encontrado nada para solucionar mi problema, el asunto es el siguiente:

Quiero remplazar una cadena por otra en un archivo de texto, el problema es que, al momento de ejecutar la instruccion, solo me remplaza las cadenas que estan en una misma linea, ya que la instruccion se ejecuta y hace la busqueda y remplazo linea por linea.

Existe alguna manera para hacer que la busqueda sea continua ? es decir, que busque en todo el archivo como un todo, y no linea por linea.

A continuacion pongo un ejemplo:

Suponiendo que archivo.txt contiene:

--------------
hola, esto es una prueba
y cambia esto por otro texto
y cambia esto por otro texto
y NO cambia
esto por otro texto
--------------

La instruccion es:

perl -pi.BAK -e "s/cambia\s+esto/porEsto/g" archivo.txt

El resultado que no quiero es:

--------------
hola, esto es una prueba
y porEsto por otro texto
y porEsto por otro texto
y NO cambia
esto por otro texto
--------------

el resultado que necesito es:

--------------
hola, esto es una prueba
y porEsto por otro texto
y porEsto por otro texto
y NO porEsto por otro texto
--------------


Alguien tiene alguna sugerencia al respecto ???

Gracias.
  #2 (permalink)  
Antiguo 16/10/2008, 06:26
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Respuesta: sustituir en archivo NO linea por linea

En las expresiones regulares hay una letra mágica que hace que trabaje con los saltos de línea...creo que era la i pero no lo recuerdo...

aunque no se si tomará el salto de línea como inexistente...

Sino puedes hacer un script que primero abra el archivo y luego eliminar los saltos de línea con $file =~ s /\r|\n//g;

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 16/10/2008, 22:42
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
Respuesta: sustituir en archivo NO linea por linea

Q onda monoswim!

gracias por responder, ummm me temo q la letra i es para que no diferencie mayusculas de minusculas, esa letra magica que mencionas yo pense que tambien existia, pero ya busque y busque y naranjas, y lo de quitar los saltos de linea no me serviria porque tampoco quiero que se destruya la estructura del texto por completo, pero lo bueno que ya le encontre una solucion,
lo que hice fue abrir el archivo dentro de un script perl, y el contenido lo vacie a un array, y con ese array hice un join pasandole como parametro un caracter vacio para que juntara todos los elementos sin que pusiera nada entre ellos al momento de juntarlos, y despues hice la sustitucion a la cadena resultante del join y listo!!! con eso quedo a todas margaras!!.

Gracias por el aporte y aqui esta la solucion por si alguien mas tiene este problema.

Al raton!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:20.