En Linux, gestionar y manipular archivos de texto es una tarea común. Dos utilidades potentes para esto son join y split. El comando join fusiona líneas de dos archivos basándose en un campo común, mientras que split divide un archivo grande en partes más pequeñas y manejables.
Unir Archivos por un Campo Común
El comando join es una herramienta fundamental cuando necesitas unir archivos linux. Por defecto, combina líneas de dos archivos ordenados basándose en un primer campo idéntico.
Por ejemplo, imagina que tienes dos archivos que deseas fusionar:
file1.txt
1 John
2 Jane
3 Mary
file2.txt
1 Doe
2 Doe
3 Sue
Usando el comando join, puedes fusionarlos fácilmente:
$ join file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
Como puedes ver, los archivos se unieron utilizando el primer campo común (1, 2, 3). Para que join funcione correctamente, los campos de unión en ambos archivos deben estar ordenados.
Especificar Campos de Unión Diferentes
¿Qué pasa si el campo común no es la primera columna? Puedes indicarle a join qué campos usar. Considera estos archivos:
file1.txt
John 1
Jane 2
Mary 3
file2.txt
1 Doe
2 Doe
3 Sue
Aquí, necesitamos unir en el segundo campo de file1.txt y el primer campo de file2.txt. El comando sería:
$ join -1 2 -2 1 file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
La bandera -1 2 especifica el campo 2 del primer archivo, y -2 1 especifica el campo 1 del segundo archivo.
Dividir Archivos Grandes
El comando split hace lo contrario de unir; divide un archivo grande en archivos más pequeños.
split somefile
Por defecto, este comando divide somefile en nuevos archivos una vez que se alcanza un límite de 1000 líneas. Los archivos de salida se nombran xaa, xab, y así sucesivamente. Puedes personalizar este comportamiento, por ejemplo, especificando un recuento de líneas diferente con la bandera -l o dividiendo por tamaño de archivo con la bandera -b.