现在我的程序生成两个数据文件。 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行。当然,他们有相同的没有。每次都有行。
答案 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