Nếu các tệp của bạn là các tệp được phân tách bằng tab (TSV) được tạo đúng cách, thì bạn có thể sử dụng csvjoin từ dựa trên Python csvkit bưu kiện.
Bán tại. được cho:
$head file1.tsv file2.tsv | con mèo -A
==> file1.tsv <==$
LogEntryTime^InameId^IPartnerId$
2021-06-05T15:00:53 07^I5lsddf^Iqyutxwr$
$
==> file2.tsv <==$
nameId^IGroupId^IcompnayId$
5lsddf^Il4buafm^I0rd33cs$
(con mèo -A để hiển thị các tab, như ^ tôi) sau đó
$ csvjoin -I -t -c nameId file1.tsv file2.tsv
LogEntryTime,nameId,PartnerId,GroupId,compnayId
2021-06-05T15:00:53 07,5lsddf,qyutxwr,l4buafm,0rd33cs
Để lấy lại đầu ra ở định dạng TSV, hãy sử dụng định dạng csv từ cùng một gói:
$ csvjoin -I -t -c nameId file1.tsv file2.tsv | csvformat -T
LogEntryTên thời gianId PartnerId GroupId công tyId
2021-06-05T15:00:53 07 5lsddf qyutxwr l4buafm 0rd33cs
Lưu ý rằng -TÔI vô hiệu hóa suy luận kiểu - đôi khi có thể hoạt động không mong muốn, đặc biệt là với các trường ngày giờ.
Thậm chí đơn giản hơn, sử dụng cối xay (có sẵn từ kho vũ trụ, dưới dạng gói cối xay):
$ mlr --tsv tham gia -f file1.tsv -j nameId sau đó sắp xếp lại -f LogEntryTime file2.tsv
LogEntryTên thời gianId PartnerId GroupId công tyId
2021-06-05T15:00:53 07 5lsddf qyutxwr l4buafm 0rd33cs
Các sắp xếp lại là cần thiết bởi vì theo mặc định mlr tham gia xuất trường chung trước (giống như hệ thống tham gia chỉ huy). Lưu ý rằng đối với đầu vào chưa được sắp xếp, toàn bộ tập tin1.tsv sẽ được nạp vào bộ nhớ.