El comando join
combina dos ficheros comparando el contenido de los campos especificados de los ficheros. Los campos suelen ser entradas separadas por espacios dentro de una línea, aunque se puede especificar otro carácter como separador con la opción -t char
, donde char
es el carácter que se quiere emplear. Se puede hacer que join ignore mayúsculas y minúsculas al realizar comparaciones empleando la opción -i
.
El efecto de join
se entiende mejor con un ejemplo. supongamos los listados 1 y 2, que contienen datos telefónicos. El listado 1 muestra los nombres asociados a los números y el listado 2 muestra si los números están registrados o no.
listado 1.txt
654-3112 Román José
767-9988 Roca Pedro
633-5454 Quina Josefa
332-1111 Soler Miriam
listado 2.txt
654-3112 no registrado
767-9988 registrado
633-5454 registrado
332-1111 no registrado
Podemos mostrar el contenido de ambos ficheros utilizando join
:
Por defecto, join
utiliza el primer campo para realizar las comparaciones con el resto de ficheros. Como tanto en el listado 1.txt
como el 2.txt
el número de teléfono se sitúa en este campo, es el campo clave de la salida. Se puede especificar otro campo utilizando las opciones -1
o -2
para especificar el campo de asociación del primer o segundo fichero, respectivamente de manera que join -1 3 -2 2
cameras.txt
y el segundo lenses.txt
asociará el tercero de cameras.txt
y el segundo de lenses.txt
. La opción -FORMAT
permite especificaciones más complejas para el formato del fichero de salida.
El comando join
se puede utilizar en el núcleo de un conjunto de sencillas herramientas personalizadas para la manipulación de bases de datos que empleen los comandos de manipulación de texto de Linux, aunque está muy limitado; por ejemplo, que las líneas de sus ficheros tengan el mismo orden (podemos utilizar el comando sort
para asegurarnos de que sea así).