Если ваши файлы представляют собой правильно созданные файлы с разделителями табуляции (TSV), вы можете использовать csvjoin на основе Python csvkit упаковка.
Бывший. данный:
$ головной файл1.tsv файл2.tsv | кот -А
==> файл1.tsv <==$
LogEntryTime^InameId^IPartnerId$
2021-06-05T15:00:53 07^I5lsddf^Iqyutxwr$
$
==> файл2.tsv <==$
nameId^IGroupId^IcompnayId$
5lsddf^Il4buafm^I0rd33cs$
(кот -А сделать вкладки видимыми, т.к. ^ я) тогда
$ csvjoin -I -t -c nameId file1.tsv file2.tsv
LogEntryTime, nameId, PartnerId, GroupId, compnayid
2021-06-05T15:00:53 07,5lsddf,qyutxwr,l4buafm,0rd33cs
Чтобы вернуть вывод в формате TSV, используйте CSVформат из того же пакета:
$ csvjoin -I -t -c nameId file1.tsv file2.tsv | CSVформат -T
LogEntryTime nameId PartnerId GroupId compnayId
2021-06-05T15:00:53 07 5lsddf qyutxwr l4buafm 0rd33cs
Обратите внимание, что -Я отключает вывод типа, который иногда может вести себя неожиданно, особенно с полями даты и времени.
Еще проще, используя Миллер (доступен в репозитории юниверса в виде пакета мельник):
$ mlr --tsv join -f file1.tsv -j nameId then reorder -f LogEntryTime file2.tsv
LogEntryTime nameId PartnerId GroupId compnayId
2021-06-05T15:00:53 07 5lsddf qyutxwr l4buafm 0rd33cs
Изменение порядка необходимо, потому что по умолчанию млр присоединиться сначала выводит общее поле (так же, как система присоединиться команда). Обратите внимание, что для несортированного ввода все файл1.tsv будет загружен в память.