【问题标题】:Merge multiple files by common field - Unix按公共字段合并多个文件 - Unix
【发布时间】:2012-12-04 19:57:46
【问题描述】:

我有数百个文件,每个文件有两列:

例如:

file1.txt

ID Value1
1   40
2   30
3   70

file2.txt

ID Value2
1   50
2   70 
3   20 

以此类推,直到

file150.txt

ID Value150
1   98
2   52
3   71

如何根据第一列合并这些文件(这很常见)。我的输出应该是

ID Value1 Value2...........Value150
1   40     50                98
2   30     70                52
3   70     20                71

谢谢。

【问题讨论】:

    标签: file merge


    【解决方案1】:
    1. 使用剪切和粘贴组合解决三个或更多文件的文件合并问题。 cd 到的文件夹只包含 file1, file2, file3, ... file150:

      i=0
      cut -f 1 file1 > delim   ## use first column as delimiter
      for file in file*
      do
              i=$(($i+1))  ## for adding count to distinguish files from original ones
              cut -f 2 $file > ${file}__${i}.temp
      done
      paste -d\\t delim file*__*.temp > output
      
    2. 另一种解决方案是使用join将两个文件分步合并一次。

      join -j 1 test1 test2  | join -j 1 test3 - | join -j 1 test4 -
      

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 2010-11-14
      • 2019-11-29
      • 2011-12-18
      • 1970-01-01
      • 2012-12-05
      • 2015-03-29
      • 2021-03-08
      相关资源
      最近更新 更多