Объедините два файла с одинаковым форматом на основе значений определенного column

У меня есть два файла stat_1.txt & stat_2. txt . Таким образом:

job_id | время_исполнения

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

12345 | 00: 04: 42.454282

12346 | 00: 03: 26.360487

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

job_id | время_исполнения

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

12347 | 00: 01: 43.634521

12345 | 00: 02: 34.321451

Конечно, в каждом файле есть еще тысячи записей.Мне нужно разместить в одном файле job_id , которые присутствуют в обоих файлах, для сравнительного анализа времени выполнения. (аналогично тому, что мы могли бы сделать при объединении таблиц.) Как мне это сделать? Я уверен, что в bash должен быть элегантный способ.

Файлы не упорядочены по идентификатору задания. Есть некоторые job_id, которые присутствуют только в одном файле, но не в другом. (Извините, если приведенные выше таблицы выглядят неаккуратно. Я не знаком с форматированием и немного тороплюсь.)

0
28.04.2017, 16:01
1 ответ

Вы можете сделать это следующим образом:

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 и test2 — это два файла, которые необходимо объединить

Вот пример:

[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
0
28.01.2020, 04:46

Теги

Похожие вопросы