用于比较两个文件之间差异的shell脚本问题。 [Linux的]

时间:2009-12-17 13:32:33

标签: linux shell

现在我的程序生成两个数据文件。 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,因为第二行和第三行不同,一个数字不同。怎么做???

我尝试使用diff命令,然而,我无法得到我想要的东西......

需要你的帮助......谢谢。

增加: 每个文件大约有10,000到100,000行。当然,他们有相同的没有。每次都有行。

4 个答案:

答案 0 :(得分:4)

diff a.txt b.txt | grep "<" | wc -l

答案 1 :(得分:3)

前一阵雨面对同样的问题。你需要的是diffstat。 Diffstat是GNU diff包的一部分,可以总结diff结果:

  

<强>概要

     

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

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

diff -u FileA.txt FileB.txt | diffstat -f0 | grep -v文件| awk'{print $ 3}'

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

答案 2 :(得分:1)

diff似乎正是你想要的。

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

你有什么更具体的想法吗?

答案 3 :(得分:1)

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

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