unirse al comando en Linux

El comando de unión en UNIX es una utilidad de línea de comandos para unir líneas de dos archivos en un campo común.

Suponga que tiene dos archivos y es necesario combinar estos dos archivos de manera que la salida tenga aún más sentido. Por ejemplo, podría haber un archivo que contenga nombres y otro que contenga identificaciones y el requisito es combinar ambos archivos en de tal manera que los nombres y los ID’s correspondientes aparezcan en la misma línea. El comando join es la herramienta para ello. El comando unir se usa para unir los dos archivos en función de un campo clave presente en ambos archivos . El archivo de entrada puede estar separado por espacios en blanco o cualquier delimitador.
Sintaxis:

$join [OPTION] FILE1 FILE2

Ejemplo :
Supongamos que hay dos archivos file1.txt y file2.txt y queremos combinar el contenido de estos dos archivos.

// displaying the contents of first file //
$cat file1.txt
1 AAYUSH
2 APAAR
3 HEMANT
4 KARTIK

// displaying contents of second file //
$cat file2.txt
1 101
2 102
3 103
4 104

Ahora, para combinar dos archivos, los archivos deben tener algún campo común. En este caso, tenemos la numeración 1, 2… como campo común en ambos archivos.

NOTA: Al usar el comando de unión, ambos archivos de entrada deben ordenarse en la CLAVE en la que vamos a unir los archivos.

//..using join command...//
$join file1.txt file2.txt
1 AAYUSH 101
2 APAAR 102
3 HEMANT 103
4 KARTIK 104

// by default join command takes the 
first column as the key to join as 
in the above case //

Entonces, la salida contiene la clave seguida de todas las columnas coincidentes del primer archivo file1.txt, seguidas de todas las columnas del segundo archivo file2.txt.

Ahora, si quisiéramos crear un nuevo archivo con los contenidos unidos, podríamos usar el siguiente comando:

$join file1.txt file2.txt > newjoinfile.txt

//..this will direct the output of joined files
into a new file newjoinfile.txt 
containing the same output as the example 
above..//

Opciones para el comando de unión:

1. -a FILENUM : Además, imprime líneas no emparejables del archivo FILENUM, donde FILENUM es 1 o 2, correspondiente a FILE1 o FILE2.
2. -e VACÍO: reemplaza los campos de entrada faltantes con VACÍO.
3. -i – -ignore-case: ignora las diferencias entre mayúsculas y minúsculas al comparar campos.
4. -j CAMPO: Equivalente a «-1 CAMPO -2 CAMPO».
5. -o FORMATO: Obedezca FORMATO mientras construye la línea de salida.
6. -t CARÁCTER: Utilice CARÁCTER como separador de campo de entrada y salida.
7. -v FILENUM: como -a FILENUM, pero suprime las líneas de salida unidas.
8. -1 CAMPO: Únase a este CAMPO del archivo 1.
9. -2 CAMPO: Únase a este CAMPO del archivo 2.
10. – -check-order:Verifique que la entrada esté ordenada correctamente, incluso si todas las líneas de entrada son emparejables.
11. – -nocheck-order : No verifica que la entrada esté ordenada correctamente.
12. – -ayuda: muestra un mensaje de ayuda y sale.
13. – -version: muestra la información de la versión y sale.

Uso de las opciones de combinación
1. Uso de la opción -a FILENUM: ahora, a veces es posible que uno de los archivos contenga campos adicionales, por lo que lo que hace el comando de combinación en ese caso es que, de manera predeterminada, solo imprime líneas emparejables. Por ejemplo, incluso si el archivo file1.txt contiene un campo adicional, siempre que el contenido de file2.txt sea el mismo, la salida producida por el comando de unión sería la misma:

//displaying the contents of file1.txt//
$cat file1.txt
1 AAYUSH
2 APAAR
3 HEMANT
4 KARTIK
5 DEEPAK

//displaying contents of file2.txt//
$cat file2.txt
1 101
2 102
3 103
4 104

//using join command//
$join file1.txt file2.txt
1 AAYUSH 101
2 APAAR 102
3 HEMANT 103
4 KARTIK 104

// although file1.txt has extra field the 
output is not affected cause the 5 column in 
file1.txt was unpairable with any in file2.txt//

¿Qué pasa si tales líneas no emparejables son importantes y deben ser visibles después de unir los archivos? En tales casos, podemos usar la opción -a con el comando de unión que ayudará a mostrar líneas que no se pueden emparejar. Esta opción requiere que el usuario pase un número de archivo para que la herramienta sepa de qué archivo está hablando.

//using join with -a option//

//1 is used with -a to display the contents of
first file passed//

$join file1.txt file2.txt -a 1
1 AAYUSH 101
2 APAAR 102
3 HEMANT 103
4 KARTIK 104
5 DEEPAK

//5 column of first file is 
also displayed with help of -a option
although it is unpairable//

2. Uso de la opción -v: ahora, en caso de que solo desee imprimir líneas que no se pueden emparejar, es decir , suprimir las líneas emparejadas en la salida, entonces se usa la opción -v con el comando de unión.
Esta opción funciona exactamente como funciona -a (en términos de 1 usado con -v en el ejemplo a continuación).

//using -v option with join//

$join file1.txt file2.txt -v 1
5 DEEPAK 

//the output only prints unpairable lines found
in first file passed//

3. usando la opción -1, -2 y -j: Como ya sabemos, unir combina líneas de archivos en un campo común, que es el primer campo por defecto. Sin embargo, no es necesario que la clave común en ambos archivos siempre ser la primera columna. El comando unir proporciona opciones si la clave común no es la primera columna.
Ahora, si desea que el segundo campo de cualquiera de los archivos o de ambos archivos sea el campo común para unirse, puede hacerlo usando las opciones de línea de comando -1 y -2 . El -1 y -2 aquí representan el primer y segundo archivo y estas opciones requieren un argumento numérico que se refiera al campo de unión para el archivo correspondiente. Esto será fácilmente comprensible con el siguiente ejemplo:

//displaying contents of first file//
$cat file1.txt
AAYUSH 1
APAAR 2
HEMANT 3
KARTIK 4

//displaying contents of second file//
$cat file2.txt
 101 1
 102 2
 103 3
 104 4

//now using join command //

$join -1 2 -2 2 file1.txt file2.txt
1 AAYUSH 101
2 APAAR 102
3 HEMANT 103
4 KARTIK 104

//here -1 2 refers to the use of 2 column of
first file as the common field and -2 2
refers to the use of 2 column of second
file as the common field for joining//

Entonces, así es como podemos usar diferentes columnas además de la primera como campo común para unir.
En caso de que tengamos la misma posición del campo común en ambos archivos (aparte del primero), simplemente podemos reemplazar la parte -1[field] -2[field] en el comando con -j[field] . Entonces, en el caso anterior, el comando podría ser:

//using -j option with join//

$join -j2 file1.txt file2.txt
1 AAYUSH 101
2 APAAR 102
3 HEMANT 103
4 KARTIK 104

4. usando la opción -i:
Ahora, otra cosa sobre el comando de unión es que, de forma predeterminada, distingue entre mayúsculas y minúsculas. Por ejemplo, considere los siguientes ejemplos:

//displaying contents of file1.txt//
$cat file1.txt
A AAYUSH
B APAAR
C HEMANT
D KARTIK

//displaying contents of file2.txt//
$cat file2.txt
a 101
b 102
c 103
d 104

Ahora, si intenta unir estos dos archivos, usando el (primer) campo común predeterminado, no pasará nada. Eso es porque el caso de los elementos de campo en ambos archivos es diferente. Para hacer que join ignore este caso, use la opción de línea de comando -i.

//using -i option with join//
$join -i file1.txt file2.txt
A AAYUSH 101
B APAAR 102
C HEMANT 103
D KARTIK 104

5. Uso de la opción – -nocheck-order: de forma predeterminada, el comando de unión comprueba si la entrada suministrada está ordenada o no, e informa si no lo está. Para eliminar este error/advertencia, tenemos que usar el comando – -nocheck-order como:

//syntax of join with --nocheck-order option//

$join --nocheck-order file1 file2

6. Usando la opción -t: La mayoría de las veces, los archivos contienen algún delimitador para separar las columnas. Actualicemos los archivos con delimitador de coma.

$cat file1.txt
1, AAYUSH
2, APAAR
3, HEMANT
4, KARTIK
5, DEEPAK

//displaying contents of file2.txt//
$cat file2.txt
1, 101
2, 102
3, 103
4, 104

Ahora, la opción -t es la que usamos para especificar el delimitador en tales casos.
Dado que la coma es el delimitador, lo especificaremos junto con -t.

//using join with -t option//

$join -t, file1.txt file2.txt
1, AAYUSH, 101
2, APAAR, 102
3, HEMANT, 103
4, KARTIK, 104

Publicación traducida automáticamente

Artículo escrito por Dimpy Varshni y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *