2009-12-17 58 views
0

现在我的程序生成两个数据文件。 A.TXT和b.txt 以A.TXT为例,它的内容就像这样:用于比较两个文件之间差异的shell脚本问题。 [Linux]

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 
...... 

外壳脚本输出2作为第二和第三线是与一个不同数目不同。这个怎么做???

我试试diff命令,但是,我不能得到我想要的东西......

需要你的善良help..Thanks。

此外: 每个文件约有10,000 - 100,000行。当然,他们有相同的号码。每次都是行。

回答

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

谢谢我忘了统计“---”的数字,谢谢伊万。 – MaiTiano 2009-12-17 13:41:32

+0

欢迎!其实,我认为你需要“<”而不是“---”。我在答案中做了一个更正。 – 2009-12-17 13:43:11

1

diff似乎正是你想要的。

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

有什么更具体的,你正在寻找?

+0

感谢您的热心帮助。 – MaiTiano 2009-12-17 13:42:20

+0

当我输入正如你所说的,我得到了这个消息, grep:无法识别的选项'---', – MaiTiano 2009-12-17 13:46:17

1

差异可能会移动一个文件内的块,这不是你想要的,我认为。 这里有一个选择:

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

面临着同样的问题而回。你需要的是diffstat。 Diffstat是GNU DIFF包的一部分,并且可以总结差异结果:

概要

diffstat读取diff的输出,和 显示 插入,缺失,和 修改的直方图per-文件。审查大型复杂补丁文件 是有用的。

您也可以处理diffstat的输出得到汇总结果:

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

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

相关问题