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:
- Segundo campo de prueba1
- Campo en común entre prueba1 y prueba2
- 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:
Espero que este post les haya sido útil.
¡Nos leemos en breve!