如何查找两个文件的集合差异?

2024-04-21

我有两个文件 A 和 B。我想找到 A 中 B 中没有的所有行。在 bash/使用标准 Linux 实用程序中执行此操作的最快方法是什么?到目前为止,这是我尝试过的:

for line in `cat file1`
 do
   if [ `grep -c "^$line$" file2` -eq 0]; then
   echo $line
   fi
 done

它有效,但速度很慢。有没有更快的方法来做到这一点?


Bash 常见问题解答 http://mywiki.wooledge.org/BashFAQ 描述了用 comm 来做这件事 http://mywiki.wooledge.org/BashFAQ/036,这是规范正确的方法。

# Subtraction of file1 from file2
# (i.e., only the lines unique to file2)
comm -13 <(sort file1) <(sort file2)

diff 不太适合此任务,因为它尝试对块而不是单独的行进行操作;因此,它必须使用的算法更加复杂且内存效率较低。

通讯已Single Unix 规范的一部分 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/comm.html自 SUS2(1997)以来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查找两个文件的集合差异? 的相关文章

随机推荐

  • javascript - 从输入类型=文件获取文件名和扩展名

    我有一个文件上传输入 当我单击浏览按钮并选择文件时 我希望文件名和扩展名显示在两个输入文本框中 请参阅代码示例 它与扩展名一起正常工作 但文件名还显示了给我 fakepath 警告的路径 我明白为什么 但是有什么好方法可以做到这一点并将文件
  • 在 thymeleaf spring boot 中,动态轮播滑块不起作用

    In my spring boot thymeleaf this following code is slider does not work well Show the result in image What wrong with in
  • 您应该如何诊断错误 SEHException - 外部组件抛出异常

    每当用户报告错误时 例如 System Runtime InteropServices SEHException 外部组件引发的异常 作为一名程序员 我可以做些什么来确定原因吗 场景 一名用户 使用我公司编写的程序 报告了此错误 这可能是也
  • 从另一个页面访问时引导滚动间谍

    我试图链接到主页的特定部分 同时保持滚动间谍功能 有了这个代码 li a href sec1 About a li 滚动间谍正在运行 但如果我尝试从主页以外的页面访问它 它只会添加 sec1 到当前页面的 url 没有效果 如果我把它改成
  • 关于在单列中查找重复项的宏的建议

    发现了很多涉及在两列中查找重复项的问题 i e MS Excel 如何创建宏来查找重复项并突出显示它们 https stackoverflow com questions 2162684 ms excel how to create a m
  • 为什么numba cuda调用几次后运行速度变慢?

    我正在尝试如何在 numba 中使用 cuda 然而我却遇到了与我预想不同的事情 这是我的代码 from numba import cuda cuda jit def matmul A B C Perform square matrix m
  • ggpairs 中的数字四舍五入

    是否可以将 ggpairs 中的相关数字舍入为例如 2 位数字 library GGally ggpairs iris columns 1 4 mapping ggplot2 aes col Species 这是一个修改版本ggally c
  • 用于累积逗号分隔字符串的 C++ 预处理器宏

    我需要执行以下操作 const char my var Something REGISTER my var const char my var2 Selse REGISTER my var2 concst char all OUTPUT R
  • SSIS 错误 - 包中的版本号无效

    失败作业对应的日志如下 2014 年 4 月 11 日 06 40 00 LPR New 错误 0 USPHND0088 LPR New 作业 结果 作业失败 该作业由 Schedule 14 调用 LPR New Job 最后运行的一步是
  • 如何检测远程机器的操作系统

    从基于 net 的应用程序中 确定远程计算机上运行的操作系统是 Windows 还是 Linux 的最快方法是什么 只需 ping 一下即可 如果 TTL 生存时间 为 254 或更小 则它是基于 UNIX 的 如果 TTL 为 128 或
  • WPF:多显示器编程

    我在用着WPF in C 我想从多显示器编程开始 这意味着该应用程序将在许多具有不同视图的显示器上显示 我在网上搜索过 我得到了使用的方法Screen AllScreens 但是我有以下问题 有多种方法可以将多台显示器连接到 PC 情况 1
  • PDF 文件中的隐写术 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有人能告诉我 哪里可以将一些数据隐藏到 PDF 文件中吗 换句话说 PDF 文件中的隐写术 有什么算法可以做到这一点吗 有很多方法可以做到这一点 包括
  • 如何用bind来定义apply?

    在 Haskell 中 Applicatives 被认为比 Functor 更强 这意味着我们可以使用 Applicative 来定义 Functor 例如 Functor fmap a gt b gt f a gt f b fmap f
  • Swift - 在 LaunchScreen 上执行代码 [重复]

    这个问题在这里已经有答案了 在 iOS 中 在应用程序准备就绪之前会有一个 LaunchScreen 您可以在此添加要做的事情 代码 吗 我想在 LaunchScreen 上执行 JSON 请求 但不知道将代码放在哪里 提前致谢 卡塞特 正
  • 是否可以更改 MediaRecorder 的流?

    getUserMedia constrains then stream gt var recorder new MediaRecorder stream recorder start recorder pause get new strea
  • 将对象转换为可编码对象失败

    我收到以下错误 Converting object to an encodable object failed Instance of Patient 0 JsonStringifier writeObject dart convert j
  • Deltaspike 和@Stateless Bean

    我想使用 DeltaSpike API 保护我的 无状态 EJb Stateless Remote UserServiceRemote class public class UserService implements UserServic
  • 我们可以检索 li 的默认计数器值吗?

    我们可以检索到CSSli 的默认计数器值 例如 如果我有 6 个 li 分成 2 ol 但我想要 li 从 1 到 6 列出 而不是从 1 到 3 列出两次 我用了value 4 在第一个 li li 第二个的 ol 所以它有效 但现在因为
  • TeamCity Agent 缺少 DotNetFramework4.0_x86,但不是?

    我一直在尝试将 TeamCity 安装从旧服务器转移到新的 Windows Server 2008 R2 服务器上 我终于完成了所有配置 然而 构建代理说DotNetFramework4 0 x86在构建代理上不可用 但已安装 NET 4
  • 如何查找两个文件的集合差异?

    我有两个文件 A 和 B 我想找到 A 中 B 中没有的所有行 在 bash 使用标准 Linux 实用程序中执行此操作的最快方法是什么 到目前为止 这是我尝试过的 for line in cat file1 do if grep c li