
У меня есть два файла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. Некоторые job_id присутствуют только в одном файле, но не в другом. (Извините, если таблицы выше выглядят неряшливо. Я не знаком с форматированием и немного тороплюсь.)
решение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