比较两个文件diff awk else

时间:2015-08-12 22:32:19

标签: linux bash awk sed

请你快点帮帮我吗?我有两个文件,每个文件有1列。我需要将fileA与fileB进行比较,找出FileA中哪些项目已经存在于FILEB中并将它们打印到另一个文件中。所以基本上想找出它们共有的名称。

所以我有类似的东西

FILEA

MATT.1
HANNA.1
OTTOO.2
MARK.2
SAM.3

FILEB

SAM.3
MATT.1
JEFF.6
ALI.8

结果文件应为

SAM.3
MATT.1

我正在考虑编写一个shell脚本cat一个文件并逐行比较,但必须有一个更好更简单的方法来使用众多命令之一。你能帮忙吗?

此致

2 个答案:

答案 0 :(得分:3)

这是comm的工作。输入文件需要排序

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

会给你共同的界限。

awk回答:

awk 'NR==FNR {f[$0]=1; next} $0 in f' fileb filea

将较小的文件作为第一个参数来限制所需的内存量。

答案 1 :(得分:2)

这看起来返回filea中与fileb中任何一行匹配的行:

$ grep -Ff fileb filea
MATT.1
SAM.3

-F告诉grep寻找固定模式,而不是正则表达式。

-f告诉grep从文件中获取模式列表,在本例中为fileb

更多选项

我们可以通过以下选项使匹配更具限制性:

-w会告诉grep只匹配整个单词。

-x会告诉grep只匹配整行。