bash – 如何找到两个文件的集合差异?

我有两个文件A和B.我想找到A中不在B中的所有行.在bash /使用标准 linux实用程序中,最快的方法是什么?这是我到目前为止所尝试的:
for line in `cat file1`
 do
   if [ `grep -c "^$line$" file2` -eq 0]; then
   echo $line
   fi
 done

它有效,但速度很慢.有更快的方法吗?

The BashFAQ describes doing exactly this with comm,这是规范正确的方法.
# Subtraction of file1 from file2
# (i.e.,only the lines unique to file2)
comm -13 <(sort file1) <(sort file2)

diff不太适合这个任务,因为它试图在块而不是单独的行上操作;因此,它必须使用的算法更复杂,内存效率更低.

从SUS2(1997)开始,comm一直是part of the Single Unix Specification.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...