หากไฟล์ของคุณสร้างไฟล์แยกแท็บ (TSV) อย่างถูกต้อง คุณก็สามารถใช้ได้ csvjoin
จาก Python ตาม csvkit
บรรจุุภัณฑ์.
อดีต. ที่ให้ไว้:
$ หัว file1.tsv file2.tsv | แมว -A
==> file1.tsv <==$
LogEntryTime^InameId^IPartnerId$
2021-06-05T15:00:53 07^I5lsddf^Iqyutxwr$
$
==> file2.tsv <==$
nameId^IGroupId^IcompnayId$
5lsddf^Il4buafm^I0rd33cs$
(แมว -A
เพื่อทำให้มองเห็นแท็บได้ เช่น ^I
) แล้ว
$ 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 | csvformat -T
LogEntryTime nameId PartnerId GroupId compnayId
2021-06-05T15:00:53 07 5lsddf qyutxwr l4buafm 0rd33cs
โปรดทราบว่า -ฉัน
ปิดใช้งานการอนุมานประเภท - ซึ่งบางครั้งอาจทำงานโดยไม่คาดคิด โดยเฉพาะกับฟิลด์วันที่และเวลา
ง่ายยิ่งขึ้นโดยใช้ มิลเลอร์ (มีให้จากที่เก็บจักรวาลเป็นแพ็คเกจ มิลเลอร์
):
$ mlr --tsv เข้าร่วม -f file1.tsv -j nameId จากนั้นจัดลำดับใหม่ -f LogEntryTime file2.tsv
LogEntryTime nameId PartnerId GroupId compnayId
2021-06-05T15:00:53 07 5lsddf qyutxwr l4buafm 0rd33cs
เดอะ จัดลำดับใหม่
เป็นสิ่งจำเป็นเพราะโดยปริยาย mlr เข้าร่วม
ส่งออกฟิลด์ทั่วไปก่อน (เช่นเดียวกับระบบ เข้าร่วม
สั่งการ). โปรดทราบว่าสำหรับอินพุตที่ไม่เรียงลำดับ ทั้งหมดของ ไฟล์1.tsv
จะถูกโหลดเข้าสู่หน่วยความจำ