【问题标题】:Finding how many lines are different between two files查找两个文件之间有多少行不同
【发布时间】:2013-09-13 15:11:57
【问题描述】:

编写另一个脚本,使用命令管道将 2 个文件作为参数, 比较它们的内容并计算有多少行不同。你将使用 wc –l 计算不同的行数。

我已经尝试了我能想到的一切来做到这一点。我试过cmpcommdiff。我不是在寻找一个完整的解决方案,只是朝着正确的方向前进。我会为此使用什么命令?

已经尝试了所有这些标签的组合。

cmp file1 file2 | wc -l

不知何故,我需要编辑它才能正常工作,显然不一定使用cmp 命令。

【问题讨论】:

  • 为什么diff filea fileb | wc -l 不做你需要的?
  • diff --suppress-common-lines -y file1 file2 | wc -l ?
  • 它的措辞方式听起来像是你在试图让别人做你的功课......
  • 因为计算了 diff 显示的行数,但这不是两个文件之间不同的行数,因为它包括其他行,例如 2、4c2、4 和那个只是---。
  • 您可以在sortcomm进行调查。

标签: shell unix pipe wc


【解决方案1】:

这应该做你想做的事

diff -U 0 file1 file2 | grep -c ^@

例如 file1 包含

啊啊啊 bbb ccc

file2 包含

啊啊啊 ccc ddd

结果:

 diff -U 0 file1 file2 | grep -c ^@
 2

【讨论】:

  • 在我看来,这会计算差异的数量,即使其中一些是多行的,而不是差异行。
【解决方案2】:

我发现并排差异,抑制上下文行,是一种有效的方法:

diff -y --suppress-common-lines file1 file2 | wc -l

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多