Cómo usar el comando unión en Linux

toadmin. ru

Si desea combinar datos de dos archivos de texto haciendo coincidir un campo común, puede usar el comando de unión de Linux. Esto agrega dinamismo a sus archivos de datos estáticos. Te mostraremos cómo usarlo.

Hacienda de datos en archivos

Los datos son rey. Las corporaciones, las empresas y los hogares se ejecutan por igual. Pero los datos almacenados en diferentes archivos y coincidentes con diferentes personas son un problema. Además de saber qué archivos abrir para encontrar la información que necesita, su diseño y formato pueden diferir.

También tendrá que lidiar con los dolores de cabeza administrativos de los que deben actualizarse los archivos, cuáles deben estar respaldados, qué archivos son obsoletos y cuáles se pueden archivar.

Además, si necesita consolidar datos o hacer algún análisis de todo el conjunto de datos, tiene un problema adicional.¿Cómo racionaliza los datos en diferentes archivos antes de poder hacer lo que necesita hacer con él?¿Cómo aborda la fase de preparación de datos?

La buena noticia es que si los archivos tienen al menos un elemento de datos común, el comando de unión de Linux puede sacarlo del atolladero.

Archivos de información

Todos los datos que utilizaremos para demostrar el uso del comando Connect son ficticios, comenzando con los siguientes dos archivos:

Archivo CAT-1. txt
Archivo CAT-2. txt

El siguiente es el contenido de file-1. txt:

1 Adore Varian [Correo electrónico protegido] Femenina 192. 57. 150. 231 2 Nancee Merrell [correo electrónico protegida] Femenina 22. 198. 121. 181 3 Herta Friett [Protegido por correo electrónico] Mujer 33. 167. 32. 89 4 Torie Venmore [Correo electrónico protegida] Femenina 251. 9. 204. 115 5 Deni Sealeaf [Correo electrónico protegido] Femenina 210. 53. 81. 212 6 Fidel Bezley [Correo electrónico protegido] Hombre 72. 173. 218. 75 7 Ulrikaumeko Standen [Protegido por correo electrónico] Femenino 4. 204. 0. 237 8 Odell Jursch [Correo electrónico protegido] Hombre 1. 138. 85. 117

Tenemos un conjunto de filas numeradas, y cada fila contiene toda la siguiente información:

Número Nombre Apellido Dirección de correo electrónico Género de la persona Dirección IP

A continuación se muestra el contenido de File-2. txt:

1 Varian [Correo electrónico protegido] Femenino Occidental de Nueva York $ 535, 304. 73 2 Merrell [Correo electrónico Protegido] Finger Finger Lakes $ 309, 033. 10 3 Friett [Correo electrónico Protegido] Tabro sureño femenino $ 461, 664. 44 4 Venmore [Correo electrónico protegido] Femenino Central de Nueva York $ 175, 818. 02 5 SEALeaD [Correo electrónico Protegido] Mujer North Country $ 126, 690. 15 6 Bezley [Correo electrónico Protegido] Male Mohawk Valley $ 366, 733. 78 7 STANDEN [Correo electrónico protegido] Distrito de capital femenino $ 674, 634. 93 8 Jursch [Correo electrónico protegido] Hudson Valley masculino $ 663, 821. 09

Cada línea en el archivo-2. txt contiene la siguiente información:

Número Apellido Dirección de correo electrónico Género del Distrito Personal de la Ciudad de Nueva York Valor de dólar

El comando unión funciona con «márgenes», que en este contexto significa una sección de texto rodeada de espacios, el comienzo o el final de una línea. Para unir líneas entre dos archivos, cada línea debe contener un campo común.

En consecuencia, solo podemos hacer coincidir un campo si está presente en ambos archivos. La dirección IP aparece en un solo archivo, por lo que es inútil. El primer nombre solo aparece en un archivo, por lo que no podemos usarlo. El apellido está presente en ambos archivos, pero esta sería una mala elección ya que diferentes personas tienen el mismo apellido.

Cómo cifrar particiones de disco duro en Linux

Tampoco puede vincular datos a registros masculinos y femeninos porque son demasiado vagos. Las regiones de Nueva York y los valores de dólar también solo aparecen en un archivo.

Sin embargo, podemos usar la dirección de correo electrónico porque está presente en ambos archivos y cada uno es exclusivo del individuo. Una mirada rápida a los archivos también confirma que las líneas en cada una corresponden a la misma persona, por lo que podemos usar los números de línea como campo coincidente (usaremos un campo diferente más adelante).

Tenga en cuenta que los dos archivos tienen diferentes números de campos, y eso está bien: podemos decir que la fusión qué campo usará desde cada archivo.

Sin embargo, tenga cuidado con regiones como Nueva York; En un archivo separado por el espacio, cada palabra en el nombre de la región parece un campo. Debido a que algunos nombres de región consisten en dos o tres palabras, en realidad hay diferentes números de campos en el mismo archivo. Esto está bien si estás coincidiendo con campos que aparecen en la línea antes de las regiones de Nueva York.

El comando unión

Primero, el campo que va a coincidir debe ordenarse. Tenemos números ascendentes en ambos archivos, por lo que cumplimos con este criterio. Por defecto, Join usa el primer campo en el archivo, que es lo que queremos. Otro valor predeterminado razonable es que Join espera que los delimitadores de campo sean espacios. Nuevamente, tenemos eso, para que podamos seguir adelante y correr.

Como estamos utilizando todos los valores predeterminados, nuestro comando es simple:

unir el archivo-1. txt archivo-2. txt

В

Unirse considera que los archivos son «Archivo uno» y «Archivo dos» de acuerdo con el orden en que se enumeran en la línea de comandos.

El resultado es el siguiente:

1 Adore Varian [Correo electrónico protegido] Femenino 192. 57. 150. 231 Varian [Correo electrónico Protegido] Femenino Occidental de Nueva York $ 535, 304. 73 2 Nancee Merrell [Correo electrónico protegido] Femenino 22. 198. 121. 181 Merrell [Correo electrónico Protegido] Femenino Femenino Laves $ 309, 033. 10 3 Herta Friett [correo electrónico protegido] Femenino 33. 167. 32. 89 Friett [Correo electrónico Protegido] Mujer Southern Tier $ 461, 664. 44 4 Torie Venmore [Correo electrónico Protegido] Mujer 251. 9. 204. 115 Venmore [Correo electrónico Protegido] Femenino Central de Nueva York $ 175, 818. 02 5 Deni Sealeaf [correo electrónico protegido] Femenina 210. 53. 81. 212 SEALeaF [Correo electrónico Protegido] Mujer North Country $ 126, 690. 15 6 Fidel Bezley [correos electrónicos protegidos] Hombre 72. 173. 218. 75 Bezley [Correo electrónico protegido] Valle de Mohawk Male $ 366, 733. 78 7 ULRIKAUMEKO STANDEN [Correo electrónico protegido] Mujer 4. 204. 0. 237 Standen [Correo electrónico Protegido] Distrito de capital femenino $ 674, 634. 93 8 Odell Jursch [Correo electrónico protegido] Masculino 1. 138. 85. 117 Jursch [Correo electrónico protegido] Hudson Valley masculino $ 663, 821. 09

Вывод форматируетсijo сòеющие оразор оetro з файла 1, а затеíf полebr из файла 2 без пол secur.

Несорelloén

Intentemos algo que sabemos que no funcionará. Colocaremos las líneas en el mismo archivo fuera de servicio, por lo que unir no podrá procesar el archivo correctamente. El contenido de File-3. txt es el mismo que el archivo-2. txt, pero la línea ocho está entre las líneas cinco y seis

Cómo usar FFMPEG con GUI en Linux usando Qwinff

El siguiente es el contenido de File-3. txt:

1 Varian [Correo electrónico protegido] Femenino Occidental de Nueva York $ 535, 304. 73 2 Merrell [Correo electrónico Protegido] Finger Finger Lakes $ 309, 033. 10 3 Friett [Correo electrónico Protegido] Tabro sureño femenino $ 461, 664. 44 4 Venmore [Correo electrónico protegido] Femenino Central de Nueva York $ 175, 818. 02 5 SEALeaF [Correo electrónico Protegido] Mujer North Country $ 126, 690. 15 8 Jursch [Correo electrónico Protegido] Hudson Valley masculino $ 663, 821. 09 6 Bezley [Correo electrónico Protegido] Valle de Mohawk masculino $ 366, 733. 78 7 Standen [Correo electrónico protegido] Distrito de capital femenino $ 674, 634. 93

Escribimos el siguiente comando para intentar unir File-3. txtto File-1. txt:

unir archivo-1. txt archivo-3. txt

В

Une informes de que la séptima línea en el archivo-3. txt ha fallado, por lo que no se está procesando. La séptima línea comienza con el número seis, que debe ocurrir antes que los ocho en una lista correctamente ordenada. La sexta línea en el archivo (que comienza con «8 Odell») se procesó en último lugar, por lo que vemos el resultado para ello.

Puede usar la opción de orden de verificación si desea verificar si la fusión coincide con el orden de clasificación de los archivos, no se intenta fusionar.

Para hacer esto, escribimos lo siguiente:

unir --check-pede file-1. txt file-3. txt

В

Join le dice de antemano que el problema estará en la séptima línea de archivo-3. txt.

Archivos con líneas faltantes

En File-4. txt, se ha eliminado la última línea, por lo que no hay línea ocho. El contenido es el siguiente:

1 Varian [Correo electrónico protegido] Femenino Occidental de Nueva York $ 535, 304. 73 2 Merrell [Correo electrónico Protegido] Finger Finger Lakes $ 309, 033. 10 3 Friett [Correo electrónico Protegido] Tabro sureño femenino $ 461, 664. 44 4 Venmore [Correo electrónico protegido] Femenino Central de Nueva York $ 175, 818. 02 5 HEACHEAF [Correo electrónico Protegido] Femenino Norte país $ 126, 690. 15 6 Bezley [Correo electrónico Protegido] MOHAWK VALLEY $ 366, 733. 78 7 STANDEN [Correo electrónico Protegido] Distrito de capital femenino $ 674, 634. 93

Escribimos lo siguiente, y sorprendentemente, unirnos no se queja y maneja todas las filas que puede:

unir archivo-1. txt archivo-4. txt

В

La salida enumera siete cadenas unidas.

El parámetr o-a (Imprimir inigualable) le dice a la unión que también imprima cadenas que no se pueden coincidir.

Aquí ingresamos el siguiente comando para decirle a Join para imprimir líneas desde el primer archivo que no se puede coincidir con las líneas en el segundo archivo:

uni r-a 1 archivo-1. txt archivo-4. txt

В

Se coinciden siete líneas y se imprime la octava línea desde el primer archivo. No hay información fusionada, porque File-4. txt no contenía una octava línea a la que podría coincidir. Sin embargo, al menos todavía aparece en la salida, por lo que sabe que no tiene coincidencia en el archivo-4. txt.

Ingresamos el siguiente comand o-v (suprimir cadenas unidas) para identificar cualquier cadena que no tenga una coincidencia:

uni r-v file-1. txt archivo-4. txt

В

Vemos que la línea 8 es la única línea que no tiene rival en el segundo archivo.

Coincidir con otros campos

Hagamos que coincidamos con los dos archivos nuevos en un campo que no es el valor predeterminado (el primer campo). El contenido de File-7. txt es el siguiente:

[Correo electrónico protegido] Femenina 192. 57. 150. 231 [correo electrónico protegida] Femenina 210. 53. 81. 212 [Correo electrónico protegido] Hombre 72. 173. 218. 75 [Correo electrónico Protegido] Mujer 33. 167. 32. 89 [Correo electrónico Protegido] Mujer 22. 198. 121. 181 [correo electrónico protegido] Hombre 1. 138. 85. 117 [correo electrónicoProtegido] Femenina 251. 9. 204. 115 [Correo electrónico protegido] Femenina 4. 204. 0. 237

Y aquí están el contenido de File-8. txt:

Mujer [correo electrónico protegido] Western New York $ 535, 304. 73 Femenino [Correo electrónico protegido] North Country $ 126, 690. 15 Masculino [Correo electrónico protegido] Mohawk Valley $ 366, 733. 78 Mujer [Correo electrónico protegido] Southern Tier $ 461, 664. 44 Mujeres protegidas] Finger Lagos $ 309, 033. 10 Hombres [correo electrónico] Hudson Valley $ 663, 821.[Correo electrónico protegido] Central Nueva York $ 175, 818. 02 Mujer [correo electrónico protegido] Distrito de capital $ 674, 634. 93

El único campo razonable que se puede usar para unirse es la dirección de correo electrónico, que es el primer campo en el primer archivo y el segundo campo en el segundo archivo. Para tener en cuenta esto, podemos usar las opcione s-1 (archivo con un campo) y-2 (archivo con dos campos). Estos serán seguidos por un número que indica qué campo en cada archivo debe usarse para unirse.

Cómo cambiar automáticamente el fondo de pantalla en Linux

Ingresamos lo siguiente para decirle a Join que use el primer campo en el primer archivo y el segundo campo en el segundo archivo:

uni r-1 1-2 2 fil e-7. txt fil e-8. txt

В

Los archivos se unen por dirección de correo electrónico, que aparece como el primer campo de cada línea de salida.

Usando diferentes delimitadores de campo

¿Qué haces si tienes archivos con campos separados por no espacios?

Los siguientes dos archivos están separados por comas, un solo espacio entre los nombres de lugares que consta de varias palabras:

File Cat-5. txt
File Cat-6. txt

Contenido

Podemos usa r-t (carácter delimitador) para decirle a la conexión qué carácter usar como delimitador de campo. En este caso es una coma, por lo que tecleamos el siguiente comando:

unirs e-t, archivo-5. txt archivo-6. txt

В

Todas las cadenas coinciden y los espacios se conservan en los nombres de los lugares.

Ignorando mayúsculas y minúsculas

El otro archivo, file-9. txt, es casi idéntico a file-8. txt. La única diferencia es que algunas direcciones de correo electrónico están en mayúsculas, como se muestra a continuación:

Mujer [correo electrónico protegido] Western New York $ 535, 304. 73 Femenino [Correo electrónico protegido] North Country $ 126, 690. 15 Masculino [Correo electrónico protegido] Mohawk Valley $ 366, 733. 78 Mujer [Correo electrónico protegido] Southern Tier $ 461, 664. 44 Mujeres protegidas] Finger Lagos $ 309, 033. 10 Hombres [correo electrónico] Hudson Valley $ 663, 821.[Correo electrónico protegido] Central Nueva York $ 175, 818. 02 Mujer [correo electrónico protegido] Distrito de capital $ 674, 634. 93

Cuando fusionamos file-7. txt y file-8. txt, todo funcionó bien. Veamos qué sucede con file-7. txt y file-9. txt.

Escribe el siguiente comando:

uni r-1 1-2 2 archivo-7. txt archivo-9. txt

В

Solo hemos recogido seis cuerdas. La diferencia de mayúsculas y minúsculas impedía unir las otras dos direcciones de correo electrónico.

Sin embargo, podemos usar el parámetr o-i (ignorar mayúsculas y minúsculas) para forzar la fusión de estas diferencias y hacer coincidir los campos que contienen el mismo texto independientemente de las mayúsculas y minúsculas.

Escribe el siguiente comando:

uni r-1 1 1-2 2-i archivo-7. txt archivo-9. txt

В

Las ocho líneas coinciden y se unieron correctamente.

Mezclar y combinar

En combinación, tiene un poderoso aliado cuando se enfrenta a una preparación de datos complicada. Tal vez necesite analizar datos o esté tratando de darles forma para realizar una importación a otro sistema.

Sea cual sea la situación, ¡te alegrará tenerte en tu rincón!