viernes, 23 de diciembre de 2022

Comandos join y paste

Posted by q3it on viernes, diciembre 23, 2022 in



En el post anterior hablé sobre como dividir un fichero grande en ficheros más pequeños, hoy voy a hablar de dos comandos que nos permitirá ver lo contrario, es decir, nosotros tenemos ficheros dos ficheros y lo que vamos a hacer es unirlos para generar un nuevo fichero.

Para ello vamos a utilizar el comando join y el comando paste, lo primero es que une dos ficheros ordenados, ¡tienen! que estar ordenados por un campo en común. ¿Qué significa esto?. Imaginemos que nosotros tenemos un fichero con nombre y otro con apellidos y tenemos un campo que es el identificador numérico, pues podemos utilizar el comando join para unir los nombres y los apellidos.
 
Su sintaxis es simple, join primer fichero y segundo fichero, y podemos especificar opciones, por ejemplo, lo normal es que los ficheros estén separados por espacios o tabuladores, entonces no tendríamos que especificar delimitador que separa estos campos. Si nosotros tuviéramos otro especificaríamos con la opción -t el delimitador que separar los campos y si nosotros no estamos uniendo por el primer campo podemos utilizar -1 y el campo del fichero. Por ejemplo, el campo 2 el campo 3 y lo mismo con el segundo fichero con la opción -2 podemos utilizar la opción para especificar el campo que nosotros queremos utilizar para unir los dos ficheros.
 
Vamos a verlo en consola, tenemos un fichero llamado nombres.txt que tiene ciertos nombres, y vemos que tiene un identificador numérico 1 2 4 y 5 a la derecha y el segundo campo tiene los nombres. Luego tenemos un fichero llamado apellidos que va del 1 al 5 el identificador pero en este caso tenemos que el 3 no tiene nombre.
 
 
Utilizamos el comando join nombres.txt apellidos.txt en este caso como estamos utilizando el delimitador espacio no tenemos que utilizar la opción -t, y como estamos uniendo el primer campo, no tenemos que utilizar la opción -1 o -2 para especificar el campo. 
 
 
El resultado que nos arroja es que está uniendo Paul con su apellido Otellini, John con Chambers y luego como el apellido número 3 no tienen ningún identificador entonces no lo muestra, etc.
 
El segundo comando que vamos a ver es paste, que une dos ficheros línea por línea. Aquí no tienen que haber campos en común ni tienen que estar ordenados, simplemente el fichero primero unirá su primera línea con la primera línea del segundo fichero, y así por cada línea de los dos ficheros. Lo que lo hará el comando es unir esas líneas y pondrá un tabulador en medio separando las dos líneas, si nosotros queremos especificar otro método utilizaremos la opción -d.
 
 
En la figura anterior vemos que la primera línea se une con la primera línea del segundo fichero con un tabulador en medio, y lo mismo con las siguientes líneas. Y también vemos que aunque no coincidan los campos, unirá las líneas. Por eso no nos cuadra los apellidos con los nombres. El comando paste es útil cuando nosotros sabemos que tenemos el mismo número de líneas en los dos ficheros y queremos unir.