次の内容を含む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