• Publicidad

Comparar archivos .tab

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

Comparar archivos .tab

Notapor martaf » 2012-09-25 10:11 @466

¡Hola!

Soy nueva en esto de la programación con Perl y ¡aún no consigo aclararme!

Mi pregunta es muy básica. ¿Podrían ayudarme a crear un programa que me compare dos archivos (la extensión de los archivos es ".tab")?

Este programa tiene que buscar el contenido de las celdas del archivo 1 (por ejemplo, el contenido de A1, A2, A3...) y buscar si está en el archivo 2 (búsqueda en todas las celdas de la columna B de este segundo archivo). Después, tendría que crear otro archivo que tuviera los resultados de los datos no coincidentes.

¡Gracias!
martaf
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-09-25 09:30 @437

Publicidad

Re: Comparar archivos .tab

Notapor explorer » 2012-09-25 10:53 @495

Bienvenida a los foros de Perl en Español, martaf.

Creo que ya lo tienes resuelto en este hilo: Comparar 2 ficheros y crear un 3º sin las líneas del 2º.

Mira a ver si te vale. Si no, publica aquí lo que tengas hecho y te iremos ayudando.
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

Re: Comparar archivos .tab

Notapor martaf » 2012-09-26 08:16 @386

¡Muchas gracias! ¡Habéis sido de mucha ayuda!

Este es el programa que he creado. Pero no consigo que funcione correctamente. ¿Sabéis dónde puede estar el problema?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use autodie;
  4.  
  5. my %allgeno;
  6.  
  7.  
  8. open GENOTYPED, '<', 'GW_DATA_genotyped.tab';
  9.  
  10.  
  11. while (my $geno= <$GENOTYPED>)
  12. {
  13.     my($ID) = split /\t/, $geno, 2;
  14.     $allgeno{$ID} = 1;
  15. }
  16.  
  17.  
  18. close GENOTYPED;
  19.  
  20. open ORIGINALDATA, '<', 'GW_DATA_ORI.tab';
  21. open OUTPUT, '>>', 'results2.txt';
  22.  
  23. while (my $data= <$ORIGINALDATA>)
  24. {
  25.     my ($ID)= split /\t/, $data, 2;
  26.     if (not exists $allgeno {$ID}) {
  27.         print $OUTPUT $data;
  28.     }
  29. }
  30.  
  31. close OUTPUT;
  32. close ORIGINALDATA;
  33.  
  34. END;
  35.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
martaf
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-09-25 09:30 @437

Re: Comparar archivos .tab

Notapor explorer » 2012-09-26 14:37 @651

¿A qué te refieres con que no funciona correctamente?

¿Qué es lo que produce?
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

Re: Comparar archivos .tab

Notapor martaf » 2012-09-27 02:50 @159

Me genera el archivo "results" ¡pero está vacío!
Los archivos con los que estoy trabajando tendrían una estructura así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ID     Num_lab     Sex
D1      12585       F
D2      12568       M
D3      12896       F
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Lo que quiero comparar entre los dos archivos es el ID (columna 1).
martaf
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-09-25 09:30 @437

Re: Comparar archivos .tab

Notapor explorer » 2012-09-27 20:57 @914

Según tu código, lo que hay entre las columnas de los campos es un carácter tabulador (\t).

¿Es así?

Si solo son espacios, entonces cambia

split " ", $geno, 2;

por

split " ", $geno, 2;

¡Ah!, y no es

END;

sino

__END__

Es más... ¡quítalo! (no hace falta)
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 25 invitados