Unir archivos con join usando un campo en común

Cuando tenemos archivos de texto cuyo contenido se encuentra dispuesto de manera tabular y que contienen un campo en común, nos será de utilidad combinarlos a fin de disponer en uno solo toda la información de utilidad. En este post explicaremos cómo unir archivos con join. Veamos cómo usarlo.

Unir archivos con join

La mejor manera de ver cómo funciona join es mediante un ejemplo. En el mismo usaremos los siguientes archivos, en los que podemos ver

prueba1: DNI y nombre

11321345,Mario Neta
20324151,Aquiles Bailo
12415132,Elsa Blazo
32412512,Elena Nito
13241351,César Noso

prueba2: DNI y sueldo

11321345,10000
20324151,8700
12415132,10500
32412512,6500
13241351,9000

Si la información resultante fuera a ser procesada para -por ejemplo- visualizarla en un archivo HTML, nos convendría que tuviera la forma Nombre,DNI,Sueldo. Es decir, en el siguiente orden:

  1. Segundo campo de prueba1
  2. Campo en común entre prueba1 y prueba2
  3. Segundo campo de prueba2

Como join utiliza como separador de campos al espacio por defecto, tendremos que indicarle que en este caso debe utilizar la coma mediante la opción -t. Por defecto, join utilizará el primer campo de ambos archivos como campo en común, por lo que el siguiente comando

join -t, prueba1 prueba2

nos devolverá la información que necesitamos.

¿Pero qué sucedería si el DNI estuviera en otra posición en alguno de los dos archivos? Por ejemplo, cambiemos el orden en prueba1 y guardemos el resultado en

prueba3: Nombre y DNI

Mario Neta,11321345
Aquiles Bailo,20324151
Elsa Blazo,12415132
Elena Nito,32412512
César Noso,13241351

En ese caso tendremos que indicar que queremos unir ambos archivos utilizando como campo en común el segundo de prueba3 y el primero de prueba2:

join -1 2 -2 1 -t, prueba3 prueba2

donde -1 2 indica que el campo en común se encuentra en la segunda columna (2) del primer archivo (-1), mientras que -2 1 apunta a la primera columna (1) del segundo archivo (-2), de acuerdo al orden en que los pasamos como argumentos a join. En este caso, el «primer archivo» es prueba3 y el segundo prueba2.

En la Fig. 1 vemos los resultados de ambos comandos:

Unir archivos con join
Figura 1 – Unir archivos con join

Espero que este post les haya sido útil.

¡Nos leemos en breve!

Deja una respuesta