• Publicidad

Comparar campos de texto de dos archivos en Perl

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

Comparar campos de texto de dos archivos en Perl

Notapor macaco » 2014-09-10 10:24 @475

Hola.

A ver si podéis ayudarme que estoy muy flojito en esto de la programación.

Tengo dos ficheros de texto .txt de diferente longitud, y me gustaría saber cómo hacer un script el cual me devuelva aquellos resultados que no se encuentren en los dos ficheros, sino solo en uno. Por ejemplo:

Fichero 1 contiene una lista de tipos de manzanas:

Golden
Red
Royal
Fuji

Fichero 2 contiene una lista del tipo de manzana con respecto al experimento asociado a ella que a mi me interesa para mi trabajo, con algunas manzanas se han hecho varios experimentos, pero con otras sin embargo ningún experimento.

Golden_047896
Golden_569854
Golden_105687
Red_54871
Fuji_78

¿Cómo puedo sacar una lista de aquellas variedades de manzanas de las que no se ha hecho ningún experimento?

El resultado debería ser una lista con estas variedades, que en mi ejemplo sería

Royal





Muchas gracias, saludos.
macaco
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2014-09-10 10:13 @467

Publicidad

Re: Comparar campos de texto de dos archivos en Perl

Notapor explorer » 2014-09-10 10:59 @499

Bienvenido a los foros de Perl en Español, macaco.

Hay muchas formas de resolver este problema, y de hecho, en estos mismos foros habrá como mínimo diez hilos comentando variaciones y soluciones de él.

Se me ocurre lo siguiente: lees el primer archivo, y pones todas las entradas en un hash, con valores iniciales 0.

Luego, vas leyendo el segundo archivo. Para cada entrada, extraes la información que te interesa (en el ejemplo, puede ser la información que hay delante del primer guión bajo, cosa que puedes conseguir con una expresión regular o con index()+substr().

Con esa información, sumas 1 a la entrada correspondiente en el hash anterior. Así llevamos la cuenta de las veces que se repite.

Después de leer el segundo archivo, queda por recorrer el hash y sacar aquellas claves que tengan un 0 como valor, pues indicarán que no se encontraron en el segundo archivo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Comparar campos de texto de dos archivos en Perl

Notapor macaco » 2014-09-10 11:07 @505

Muchas gracias, explorer, pero es que soy nuevo en esto, y no entiendo muy bien lo que tengo que hacer. ¿Podrías darme una explicación de principiante/novato? Gracias.
macaco
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2014-09-10 10:13 @467

Re: Comparar campos de texto de dos archivos en Perl

Notapor macaco » 2014-09-10 12:13 @550

¿Y cómo lo hago si el fichero 1 tiene 22 000 elementos de la lista y el fichero 2 tiene 3 000 elementos?
macaco
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2014-09-10 10:13 @467

Re: Comparar campos de texto de dos archivos en Perl

Notapor explorer » 2014-09-10 12:46 @573

No importa que haya miles de datos. Mientras tengas memoria suficiente, puedes hacerlo. De hecho, Perl está indicado justo para estas situaciones.

Muestra el código que tengas hecho, para que veamos por dónde vas.

Mira este hilo: Comparar líneas de archivos muy grandes.

Hay más hilos que hablan al respecto.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
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 1 invitado