我正在尝试合并多个 TSV 表,但我正在努力获得我需要的输出。
假设我们有文件1:
K1 V1
K2 V2
K3 V3
K4 V4
文件2:
K1 X1 Y1
K2 X2 Y2
K4 X4 Y4
file3:(UX 是我们不想包含在最终合并中的列)
K1 UX A1
K2 UX A2
K3 UX A3
K4 UX A4
现在假设我想合并文件1,文件2和文件3,所有这些都在它们的键上并选择某些列。
所以假设我想要某个输出:
K1 V1 X1 Y1 A1
K2 V2 X2 Y2 A2
K4 V4 X4 Y4 A4
目前我正在尝试使用join -t$'t' <(sort -t$'t' -k1,1 file1)
等...但我遇到了困难,因为我正在尝试选择各种不同表中的某些列。
有谁知道解决这个问题的方法?
谢谢!
编辑:所以目前我已经合并了这样的表格:
join -t$'t' <(sort -t$'t' -k1,1 file1)
<(sort -t$'t' -k1,1 file2)
<(sort -t$'t' -k1,1 file3) > join1.txt
。但显然这不允许我选择列。我正在尝试使用awk循环来尝试这样做,但它似乎比应该的要复杂得多。
我不确定您对join
的尝试是否有效,因为join
一次只接受两个文件。您始终可以告诉join
要报告的列。以下内容适用于您的数据:
join -t$'t' -o1.1,1.2,1.3,1.4,2.3
<(join -t$'t'
<(sort -t$'t' -k1,1 file1)
<(sort -t$'t' -k1,1 file2) )
<(sort -t$'t' -k1,1 file3)
输出:
K1 V1 X1 Y1 A1
K2 V2 X2 Y2 A2
K4 V4 X4 Y4 A4