不排序的两个文件之间的差异

Yan*_*off 4 bash shell diff comm difference

我有文件file1file2其中file2是 的子集file1。这意味着,如果我迭代file1,则有些行在 中file2,有些行不在 中,但没有行file2不在 中file1。一个文件中可能有多行内容相同。现在我想知道它们之间的区别,即所有行file1都不在file2.

根据这个广受好评的答案

diff(1) 不是答案,comm(1) 才是。

(无论出于何种原因)

但据我了解,comm首先需要对文件进行排序。问题:两个文件都是有序的(未排序!),并且需要保留此顺序。所以我真正想要的是迭代file1,并检查每一行,如果它也在file2. 如果没有,请将其写入file3. 如果相同内容出现多次,则应保留多次!

有没有办法用命令行来做到这一点?

Cyr*_*rus 5

用 GNU grep 试试这个:

grep -vFf file2 file1 > file3
Run Code Online (Sandbox Code Playgroud)

更新

grep -vxFf file2 file1 > file3
Run Code Online (Sandbox Code Playgroud)