Bashは2つの列を「結合」します。

Bashは2つの列を「結合」します。

2つのファイルがあります。

1_file.txt:
ChrX 129759713 A G
ChrX 129760010 C T
ChrX 129762238 C G
ChrX 129762448 A G
ChrX 129762803 A C
ChrX 129763441 C A
ChrX 129764931 T C
ChrX 129767696 C T
ChrX 129818213 C T
ChrX 129841336 T C

2_files.txt:
Chr29 129841336 T C
Chr29 129845233 A G
Chr29 129852688 T C
Chr29 129871602 G T
Chr29 129872683 T C
ChrX 129875545 C A
ChrX 129876975 A G
ChrX 129879796 G A
ChrX 129880521 T C
ChrX 129759713 A G
ChrX 129760010 C T
ChrX 129762238 C G
ChrX 129762448 A G
ChrX 129762803 A C
ChrX 129763441 C A

2つのファイルをフィールド1と2に1つにマージしたいと思います。

The answer
ChrX 129759713 A G
ChrX 129760010 C T
ChrX 129762238 C G
ChrX 129762448 A G
ChrX 129762803 A C
ChrX 129763441 C A

Joinまたはawkを使用してこれを行う方法についてのアイデアはありますか?

ベストアンサー1

2番目のファイルに欠落している行はありますか? 「TG」または「AT」の項目は表示されません。私が知っているjoin限り、2つのフィールドは許可されず、sedを使用して2つのフィールドをリンクできます。具体的な例の例は次のとおりです。

join -j 1 <(cat 1_file.txt | sed "s/ /_/") <(cat 2_files.txt | sed "s/ /_/")

おすすめ記事