Answers:
与diff
选项类似,您可以将comm
命令与进程替换一起使用sort
((comm
需要对其进行操作的文件进行排序)。这样,您可以通过-1
只在第一个文件-2
中禁止行,只在第二个文件-3
中禁止行,或在两个文件中都禁止行,从而只关注公共行,仅关注一个文件或另一个文件中的行。查看仅在第一个文件中而不是第二个文件中的所有行
comm -23 <(sort file1) <(sort file2)
当然,如果您愿意,也可以考虑使用grep
like
grep -vFxf file2 file1
这将处理线file2
作为模式和只打印从file1中不具有匹配的线(-v
处理从线(当)-f
)file2
作为固定的字符串(-F
),必须在整个线匹配(-x
)。
该grep
解决方案的优点是不需要对文件进行排序,但是它只检查其中一个文件中不在另一文件中的行,而不是一次检查两个方向中的行。
comm
需要排序的文件。(是的,您间接提到了它,但是很容易忽略您所说的方式)。此外,comm
对于这种情况,它的效率要高得多diff
。如果grep
解决方案file2
很大,则解决方案很容易用完内存(将NFA转换为DFA时出现指数级爆炸),我们不久前就对此提出了疑问。