• Publicidad

Borrar una línea en un archivo con Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Borrar una línea en un archivo con Perl

Notapor Paty » 2008-02-22 13:55 @622

Hola,

En Perl abro un archivo para escritura.
Cuando encuentra la expresión regular buscada quiero borrar esa línea.
¿Cómo puedo hacerlo?

En foros y tutoriales la idea era copiar el archivo que abro a otro archivo y esa línea no copiarla y antes de terminar el programa Perl renombrar éste nuevo archivo.

¿Es la mejor forma de realizar esto? El archivo no tiene muchas líneas.

Saludos,
Paty
Paty
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2008-02-22 13:35 @608

Publicidad

Notapor Norther » 2008-02-22 14:42 @654

Una forma es esa, la otra es guardar todo el contenido del fichero en un array e ir recorriéndolo en busca de la expresión regular, una vez encontrada borras la línea en el array y vuelcas todo su contenido en el fichero origen sobreescribiéndolo.
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor explorer » 2008-02-22 20:02 @876

Lo normal es eso, leer el fichero, quedarnos con lo que nos interesa, y escribir el resultado.

Esta operación es tan normal que se puede hacer en una sola línea de comandos.

Buscar y remplazar texto en un archivo de texto plano

Por ejemplo
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -p -i -e '$_="" if /es la línea que busco/' fichero.txt
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Naturalmente, también se puede desde dentro de un programa, en caso de que queramos hacer algo más.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Paty » 2008-02-25 06:40 @320

Muchas gracias, por las repuestas.

Saludos,
Paty
Paty
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2008-02-22 13:35 @608

Re: Borrar una línea en un archivo con Perl

Notapor ohmega » 2013-01-17 13:19 @597

No hallo la forma de hacer funcionar esa línea que expusiste dentro de un script.

En vez de ejecutar desde terminal
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -p -i -e '$_="" if /es la línea que busco/' fichero.txt
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Usar algo como
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. '$_="" if /$miVarAborrar/' fichero.txt
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Ahora me surge otra duda: supongamos que en vez de borrar quiero agregar una línea conformada por dos variables, a un archivo, ¿cómo podría lograr esto? De ante mano ¡muchas gracias!
ohmega
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2012-11-14 17:31 @771

Re: Borrar una línea en un archivo con Perl

Notapor explorer » 2013-01-17 14:40 @652

Lo que la línea hace es abrir el archivo, leerlo línea por línea, si la línea coincide con la expresión regular, realizar una operación (modificar la propia línea), y finalmente, guardar la línea en otro sitio. Al final, guardar todas las líneas en el propio archivo (que se abrirá otra vez, pero ahora con acceso en modo de escritura).

Para agregar líneas, de puede hacer de la misma manera, en el momento de hacer la operación.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 32 invitados