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