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ớ.