1

何百ものファイルがあり、それぞれに 2 つの列があります。

例えば ​​:

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

ありがとうございました。

4

1 に答える 1

4
  1. カット アンド ペーストの組み合わせを使用して、3 つ以上のファイルのファイル マージの問題を解決します。フォルダーへの 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を使用して 2 つのファイルを段階的にマージすることです。

    join -j 1 test1 test2  | join -j 1 test3 - | join -j 1 test4 -
    
于 2013-01-15T00:19:57.260 に答える