Linux 如何比较shell中的两个文件

Linux 如何比较shell中的两个文件,linux,shell,Linux,Shell,我有一个文件file1和File2。我想比较file1和file2,并生成一个file3,其中包含file1中存在的file2中的行。您可以尝试以下操作:- awk 'FNR==NR{a[$0];next} ($0 in a)' file2 file1 使用grep $ grep -w -f file1 file2 -f用于告诉grep从文件中获取参数 -w匹配整个单词 编辑:- 你可以试试这个: fgrep -x -f file2 -v file1 -x匹配整条线 -f用于告诉g

我有一个文件file1和File2。我想比较file1和file2,并生成一个file3,其中包含file1中存在的file2中的行。

您可以尝试以下操作:-

awk 'FNR==NR{a[$0];next} ($0 in a)' file2 file1

使用grep

$ grep -w -f file1 file2
  • -f用于告诉grep从文件中获取参数
  • -w匹配整个单词
编辑:-

你可以试试这个:

fgrep -x -f file2 -v file1
  • -x匹配整条线
  • -f用于告诉grep从文件中获取参数
  • -v反转结果

因为
文件1
中的模式将被视为
模式
而非普通字符串,并将导致大量误报(例如
文件1
中的
条*
文件2
中的
条将匹配并打印
)。还有,为什么
-w
?@AdrianFrühwirth:-w这样它就匹配了整个单词!我遗漏了什么吗?哪个词?OP没有说任何关于文字的话,但也许我遗漏了什么。但正如我上面所解释的,这首先是错误的方法。@AdrianFrühwirth:-
file3包含file2中的行,所以我假设该行将由单词组成,这就是为什么给出这个答案的原因@AdrianFrühwirth:-如果您有更好的想法或答案,您可以编辑我的答案!:)