1.6.2.- Asociar ficheros por campos con join

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:

ejemplo_join1

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í).

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s