当前位置: 首页 > 知识库问答 >
问题:

比较linux终端中的两个文件

竺鸿骞
2023-03-14

有两个叫做“a.txt”和“b.txt”的文件都有单词列表。现在我想检查哪些单词在“a.txt”中是额外的,而不是在“b.txt”中。

我需要一个有效的算法,因为我需要比较两个字典。

共有3个答案

长孙诚
2023-03-14
匿名用户

如果您更喜欢 git diff 的差异输出样式,则可以将其与 --no-index 标志一起使用,以比较不在 git 存储库中的文件:

git diff --no-index a.txt b.txt

使用两个文件,每个文件中有大约200k个文件名字符串,我对这个方法进行了基准测试(使用内置的<code>time</code>命令),与这里的一些其他答案进行了比较:

git diff --no-index a.txt b.txt
# ~1.2s

comm -23 <(sort a.txt) <(sort b.txt)
# ~0.2s

diff a.txt b.txt
# ~2.6s

sdiff a.txt b.txt
# ~2.7s

vimdiff a.txt b.txt
# ~3.2s

comm 似乎是迄今为止最快的,而 git diff --no-index 似乎是 diff 样式输出的最快方法。

更新2018-03-25您实际上可以省略< code> - no-index标志,除非您在git存储库中,并且想要比较该存储库中未跟踪的文件。从手册页中:

这种形式是比较文件系统上给定的两个路径。在由 Git 控制的工作树中运行命令并且至少有一个路径点在工作树外部运行命令时,或者在由 Git 控制的工作树外部运行命令时,可以省略 --no-index 选项。

夹谷晋
2023-03-14

对它们进行排序并使用< code>comm:

comm -23 <(sort a.txt) <(sort b.txt)

COMM 比较(排序)输入文件,默认情况下输出三列:A 唯一的行、B 唯一的行以及两者中都存在的行。通过指定 -1、-2 和/或 -3,您可以抑制相应的输出。因此,comm -23 a b 仅列出 a 独有的条目。我使用

谭卜鹰
2023-03-14

如果安装了vim,请尝试以下操作:

vimdiff file1 file2

vim -d file1 file2
 类似资料:
  • 问题内容: 有两个名为 “ a.txt” 和 “ b.txt”的文件 ,都有一个单词列表。现在,我要检查 “ a.txt”中 哪些单词是多余的,而 “ b.txt”中 哪些单词不是。 我需要一种有效的算法,因为我需要比较两个字典。 问题答案: 这是我的解决方案:

  • 我在Visual Studio中看到了新的比较工具 有没有一种方法,我可以只是比较两个文件与内置的功能在Visual

  • 问题内容: 我有以下两个收藏夹,其中包含学生证。 id是格式为111-1111的字符串。例如ID 221-2534、215-6365等。 这些ID与其他数据一起位于固定格式的文件中。也就是说,前8个字符ID,后10个字符名称,后10个字符地址,依此类推。 我将id读入集合,如下所示: 此处,文件中的条目按SSN排序。因此,我相信所形成的集合也将得到排序。 现在: 案例: 我想通过比较两个集合来了解

  • 问题内容: 我有两个表,想要像这样在sqlite上比较行 我想产生这样的结果 sqlite中的语法如何?谢谢 问题答案:

  • 我有两个表,分别是产品和采购: PRODUCTS表-将获得购买的所有新产品。这意味着表prroducts中不存在相同的productname。所有独特产品列表 采购表-具有唯一purchase_id的所有采购产品的列表。 > 如果要在PURCHASE中添加或插入值,表PRODUCTS将获得PURCHASE的所有值,但前提是PURCHASE中的productname不存在于PRODUCTS中的'pr