加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:28:20 所属栏目:安全 来源:网络整理
导读:我有两个文件A和B.我想找到A中不在B中的所有行.在bash /使用标准 linux实用程序中,最快的方法是什么?这是我到目前为止所尝试的: for line in `cat file1` do if [ `grep -c "^$line$" file2` -eq 0]; then echo $line fi done 它有效,但速度很慢.有更快的
我有两个文件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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读