es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Uniendo dos archivos que tienen filas duplicadas en ambos.

Estoy tratando de unir dos archivos que tienen la misma columna 1 pero diferentes columna 2:

Archivo1

aaa 1
bbb 3
bbb 3
ccc 1
ccc 1
ccc 0

Archivo2

aaa 2
bbb 2
bbb 2
ccc 1
ccc 1
ccc 0

Cuando intento unirlos con

join Archivo1 Archivo2 > Archivo3

Obtengo

aaa 1 2
bbb 3 2
bbb 3 2
bbb 3 2
bbb 3 2
ccc 1 1
ccc 1 1
ccc 1 0
ccc 1 1
ccc 1 1
ccc 1 0
ccc 0 1
ccc 0 1
ccc 0 0

El comando “join” está tratando de expandir los duplicados cuando lo único que quiero es que vaya línea por línea, por lo que la salida debería ser

aaa 1 2
bbb 3 2
bbb 3 2
ccc 1 1
ccc 1 1
ccc 0 0

¿Cómo puedo indicarle a “join” que ignore los duplicados y simplemente combine los archivos línea por línea?

EDIT: Esto se está haciendo en un bucle con múltiples archivos que todos tienen la misma columna 1 pero diferentes columna 2. Estoy uniendo los dos primeros archivos en un archivo temporal y luego iterando a través de los demás archivos uniendo con ese archivo temporal.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede agregar la opción -a al comando join, con un valor de 1, para mostrar solo las líneas del primer archivo que no tienen una línea coincidente en el segundo archivo. Esto efectivamente ignorará los duplicados en el segundo archivo y solo combinará los archivos línea por línea. El comando modificado sería:

    join -a 1 Archivo1 Archivo2 > Archivo3
    

Comments are closed.