行数が同じファイルに列を追加する

行数が同じファイルに列を追加する

このようなファイルがあります。名前をfile1にしてください。

chr1    24018319    +   a
chr1    24019249    +   b
chr1    24020403    +   c
chr1    24021281    +   d
chr1    24022398    +   e
chr1    45241272    +   f
chr1    45241812    +   g
chr1    45242446    +   h
chr1    45243461    +   I
chr1    45243801    +   j

他の入力ファイルがあります。それらは次のとおりです。

chr1    24018319    0   +
chr1    24019249    22.4309 +
chr1    24020403    64.302  +
chr1    24021281    20.9355 +
chr1    24022398    32.8987 +
chr1    45241272    1.49539 +
chr1    45241812    318.519 +
chr1    45242446    207.86  +
chr1    45243461    112.155 +
chr1    45243801    67.2927 +

これらの他のファイルは、最初のファイルfile1と比較して行数が同じです。

各ファイルの3番目の列を最初のファイル1に追加したいと思います(行が同じであるため)。貼り付けコマンドを試しましたが機能しません。

私は次の出力が欲しい:

chr1    24018319    +   a   0
chr1    24019249    +   b   22.4309
chr1    24020403    +   c   64.302
chr1    24021281    +   d   20.9355
chr1    24022398    +   e   32.8987
chr1    45241272    +   f   1.49539
chr1    45241812    +   g   318.519
chr1    45242446    +   h   207.86
chr1    45243461    +   I   112.155
chr1    45243801    +   j   67.2927

私は何をすべきですか?私はこれを試しました

paste -d "\t" file $(cut -f 3 file2) $(cut -f 3 file3)

しかし、これはうまくいきません

ありがとう

ベストアンサー1

次のコマンドは、例で要求された出力をある程度生成しますが、スペースは保持しません。

$ join -j 2 -o 1.1 1.2 1.3 1.4 2.3 file1 file2
chr1 24018319 + a 0
chr1 24019249 + b 22.4309
chr1 24020403 + c 64.302
chr1 24021281 + d 20.9355
chr1 24022398 + e 32.8987
chr1 45241272 + f 1.49539
chr1 45241812 + g 318.519
chr1 45242446 + h 207.86
chr1 45243461 + I 112.155
chr1 45243801 + j 67.2927
$ 

おすすめ記事