2つのファイルを比較し、内容を表示します。

2つのファイルを比較し、内容を表示します。

次の内容を含む2つのファイルがあります。

File 1

OG5_126568
OG5_126583
OG5_126593
OG5_126596
OG5_126599
OG5_126609

File2

OG5_126568  psychrobacter_aquaticus.txt WP_021813339.1
OG5_126583  psychrobacter_aquaticus.txt WP_040642027.1
OG5_126583  psychrobacter_phenylpyruvicus.txt   WP_028858051.1
OG5_126585  psychrobacter_piscatorii.txt    WP_058023688.1
OG5_126593  psychrobacter_aquaticus.txt WP_021813641.1
OG5_126593  psychrobacter_aquaticus.txt WP_021814787.1
OG5_126593  psychrobacter_piscatorii.txt WP_021814787.1
OG5_126593  psychrobacter_phenylpyruvicus.txt   WP_021814787.1

最初のファイルを2番目のファイルと比較して、一致するコンテンツのみを含む新しいファイルを作成したいと思います。

生成されたファイル

    OG5_126593  psychrobacter_aquaticus.txt WP_021813641.1
    OG5_126593  psychrobacter_aquaticus.txt WP_021814787.1
    OG5_126593  psychrobacter_piscatorii.txt WP_021814787.1
    OG5_126593  psychrobacter_phenylpyruvicus.txt   WP_021814787.1

どのコマンドを使用する必要がありますか?

答え1

この質問は、すでに回答がある質問と非常によく似ています。https://stackoverflow.com/questions/13272717/inner-join-on-two-text-files

(例ファイルの内容に適用される)最も簡単な方法は、次を使用することです。

join file1 file2

これは、入力ファイルがソートされていると仮定します。

答え2

これはソリューションと同じですjoinが、入力ファイルを並べ替える必要はありません。

awk 'NR==FNR {f1[$1]; next} $1 in f1' file{1,2}

答え3

File1の行をパターンとして使用し、そのうちの1つと「一致」するすべての行を印刷するには、次のようにしますgrep

grep -f File1 File2

関連情報