Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Básico » Dividir un archivo de texto en varios  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 3 mensajes ] 
 
Nota Mié Mar 10, 2010 1:15 pm

Perlero Nuevo
Registrado: Mié Dic 12, 2007 7:07 pm
Mensajes: 7
Dividir un archivo de texto en varios  RESUELTO
Hola, mi problema es bastante sencillo pero hasta el momento no he conseguido resolverlo. Supongamos que tengo un archivo de texto que contiene:

Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
nombre
paco
juan
jose
nombre
luis
rafa
bruno
nombre

... (y así sucesivamente)

¿Cómo puedo hacer para dividirlo en archivos que contengan desde una línea "nombre" hasta la siguiente?

Un saludo.


Nota Mié Mar 10, 2010 6:35 pm
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9518
Re: Dividir un archivo de texto en varios
Algo así (pero no exactamente) (una de varias soluciones):

* Bucle para todas las filas
* Si la fila es 'nombre', cierras el fichero abierto antes y abres uno nuevo, y salto a la siguiente
* Pinto la fila en el fichero
* Fin del bucle

_________________
JF^D Perl programming


Nota Jue Mar 11, 2010 7:52 am

Perlero Nuevo
Registrado: Mié Dic 12, 2007 7:07 pm
Mensajes: 7
Re: Dividir un archivo de texto en varios
Gracias explorer, no se me había ocurrido ese planteamiento. Dejo el código final por si a alguien le resulta de utilidad en un futuro.

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #! /usr/bin/perl -w
  2.  
  3. print "¿Nombre del archivo?";
  4. $molin = <STDIN>;
  5. chomp $molin;
  6.  
  7. open(MOLIN,"$molin") || die "No pude abrir $molin: $!";
  8.  
  9. $idmol = 1;
  10. open(MOLOUT,">$idmol.mol2");
  11.         $line = <MOLIN>;
  12.         chomp $line;
  13.         print MOLOUT "$line\n";
  14.  
  15. while($line = <MOLIN>) {
  16.  
  17.         chomp $line;
  18.  
  19.         if ($line =~ /^@<TRIPOS>MOLECULE/) {
  20.  
  21.           close(MOLOUT);
  22.           $idmol = $idmol + 1;
  23.           open(MOLOUT,">$idmol.mol2");
  24.           print MOLOUT "$line\n";
  25.  
  26.  
  27.         } else {
  28.             print MOLOUT "$line\n";
  29.         }
  30. }
  31.  
  32. close(MOLIN) || die "No puedo cerrar $molin: $!";



Saludos.


Responder al tema  [ 3 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO