比较两个文件并显示内容

比较两个文件并显示内容

我有两个包含如下内容的文件:

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

我想将第一个文件与第二个文件进行比较,并生成一个仅包含匹配内容的新文件。

生成的文件

    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 中的行作为模式并打印与其中之一“匹配”的所有行,您可以使用grep

grep -f File1 File2

相关内容