【问题标题】:A shell script problem for comparing difference between two files. [Linux]用于比较两个文件之间差异的 shell 脚本问题。 [Linux]
【发布时间】:2009-12-17 13:32:32
【问题描述】:

现在我的程序生成了两个数据文件。 a.txt 和 b.txt 以a.txt为例,它的内容是这样的:

0,0
0,1
1,0
-3,1
1,-2
1,3
......

b.txt 与 a.txt 类似。

现在,我希望找出不同的行数。 也就是说,比如如果b.txt是这样的:

0,0
1,1
1,2
-3,1
1,-2
1,3
......

shell 脚本输出 2,因为第 2 行和第 3 行不同,只有一个数字不同。这个怎么办???

我尝试了 diff 命令,但是,我无法得到我想要的...

需要您的帮助..谢谢。

补充: 每个文件大约有 10,000 - 100,000 行。当然,它们的编号相同。每次的行数。

【问题讨论】:

    标签: linux shell


    【解决方案1】:
    diff a.txt b.txt | grep "<" | wc -l
    

    【讨论】:

    • 欢迎您!实际上,我认为您需要“
    【解决方案2】:

    不久前遇到了同样的问题。你需要的是 diffstat。 Diffstat 是 GNU diff 包的一部分,可以总结 diff 结果:

    概要

    diffstat 读取 diff 的输出并 显示的直方图 插入、删除和 每个文件的修改。它是有益的 用于查看大型、复杂的补丁 文件。

    您还可以处理 diffstat 的输出以获得汇总结果:

    diff -u 文件A.txt 文件B.txt |差异统计-f0 | grep -v 文件 | awk '{ 打印 $3 }'

    其中 -u 是强制性的。您可以浏览 diffstat 文档以获取选项。

    【讨论】:

      【解决方案3】:

      diff 似乎正是您想要的。

      #> diff a.txt b.txt
      2,3c2,3
      < 0,1
      < 1,0
      ---
      > 1,1
      > 1,2
      

      您是否正在寻找更具体的东西?

      【讨论】:

      • 当我按你说的输入时,我收到了这条消息,grep: unrecognized option '---',
      【解决方案4】:

      diff 可能会在文件中移动块,这不是您想要的。 这是另一种选择:

      join -t'\0' -v2 <(cat -n a.txt) <(cat -n b.txt) | wc -l
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-24
        • 1970-01-01
        • 2021-05-22
        • 1970-01-01
        • 2020-08-01
        • 1970-01-01
        • 2010-11-23
        相关资源
        最近更新 更多