从一个文件中删除与另一个文件中的行匹配的行的最简单方法是什么?

A B*_*A B 5 bash shell bash-scripting

从一个文件中删除与另一个文件中的行匹配的行的最简单方法是什么?例如,如果我有以下文件:

文件1.csv:

u2@domain.com
Run Code Online (Sandbox Code Playgroud)

file2.csv:

1,u1@domain.com,somehash1
2,u2@domain.com,somehash2
3,u3@domain.com,somehash3
Run Code Online (Sandbox Code Playgroud)

结果我想要file3.csv

1,u1@domain.com,somehash1
3,u3@domain.com,somehash3
Run Code Online (Sandbox Code Playgroud)

解决此任务的最快方法是什么?这些文件只有几 GB。

jan*_*kes 7

grep -v -F -f file1.csv file2.csv > file3.csv似乎最简单。但是您应该首先使用较小的文件进行性能测试。(我同意 soandos 的评论,即如此大的文件可能需要专门的解决方案。)

  • 显然,您使用的实际上是相同的方法,尽管代表了[无用使用`cat`](http://partmaps.org/era/unix/award.html)的一个例子。你也可以使用`< file2.csv | fgrep -vf file1.csv > file3.csv`。 (2认同)