合并键列上的多个表和不同类型的列

  • 本文关键字:同类型 合并 bash shell
  • 更新时间 :
  • 英文 :


我正在尝试合并多个 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

相关内容

  • 没有找到相关文章

最新更新