Linux cmd在不同的文件中找到相同的名称

时间:2016-01-30 10:42:57

标签: linux command-line

我有几个带名字的文件,需要查找所有文件中出现的名称。 例如。

   File 1    |   File 2   | File 3
   --------------------------------
   A         |  B         |  C
   S         |  A         |  T
   T         |  O         |  W
   G         |  F         |  I
   R         |  X         |  A

在这种情况下,它应该给我'A',因为所有文件都包含它。 顺序没关系,但它应该找到所有文件中出现的所有名称,而不是在找到第一个名字后停止!

有没有办法用命令行执行此操作?

2 个答案:

答案 0 :(得分:1)

这应该做:

grep -Fxf file1 file2 | grep -Fxf file3

省略-F-x选项可能会产生意外结果,包括空行和子字符串匹配,如this answer的评论中所述。

答案 1 :(得分:0)

由于文件未排序,下一个命令比grep慢。
当您需要对文件进行排序或想要了解如何避免临时文件时,您可能需要

comm -12 <(comm -12 <(sort file1) <(sort file2) ) <(sort file3)