Combine dos archivos que tengan el mismo formato según los valores de una columna específica

Combine dos archivos que tengan el mismo formato según los valores de una columna específica

tengo dos archivosestadística_1.txt&estadística_2.txt. Como sigue:

id_trabajo | Tiempo de ejecución

--------+--------------------

12345 | 00:04:42.454282

12346 | 00:03:26.360487

=====================

id_trabajo | Tiempo de ejecución

--------+--------------------

12347 | 00:01:43.634521

12345 | 00:02:34.321451

Por supuesto, hay miles de registros más en cada archivo. Necesito ordenar en un solo archivo elIdentificación del trabajoque están presentes en ambos expedientes, para realizar un análisis comparativo de los tiempos de ejecución. (similar a lo que podríamos hacer en una combinación de tablas). ¿Cómo hago esto? Estoy seguro de que debe haber una forma elegante en bash.

Los archivos sonno ordenadopor job_id. Hay algunos job_id que están presentes solo en un archivo pero no en el otro. (Lo siento si las tablas de arriba parecen descuidadas. No estoy familiarizado con el formato y tengo un poco de prisa).

Respuesta1

Puedes hacerlo así

awk 'NR==FNR{a[$1$2]=$3;next}
{k=$1$2;print k,a[k],$3;delete a[k]}
END{for(k in a)print k,a[k]}' test1 test2

test1 y test2 son los dos archivos para combinar

Aquí está el ejemplo:

[xxxx@xxxx test]$ awk 'NR==FNR{a[$1$2]=$3;next}
                  {k=$1$2;print k,a[k],$3;delete a[k]}
                  END{for(k in a)print k,a[k]}' test1 test2

job_id | execution_time execution_time
--------+--------------------
12347 |  00:01:43.634521
12345 | 00:04:42.454282 00:02:34.321451
12346 | 00:03:26.360487

información relacionada