【问题标题】:diff command to get number of different lines onlydiff 命令仅获取不同行的数量
【发布时间】:2015-01-29 23:02:32
【问题描述】:

我可以使用diff 命令找出两个文件相差多少行吗?

我不想要上下文差异,只想要两个文件之间不同的总行数。如果结果只是一个整数,则最好。

【问题讨论】:

标签: linux shell ubuntu


【解决方案1】:

diff 可以完成所有第一部分的工作,但不计算在内; wc -l 完成剩下的工作:

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

【讨论】:

  • 您只需要删除“grep”就可以了,谢谢!
  • 这是正确的答案,而接受的答案很复杂,明显是错误的。
  • 谢谢...这很整洁而且非常有帮助!
【解决方案2】:

是的,您可以,并且以真正的 Linux 方式,您可以使用许多命令一起通过管道执行任务。

首先你需要使用diff命令,来获取文件的差异。

diff file1 file2

这将为您提供更改列表的输出。您感兴趣的是以'>'符号为前缀的行

您使用 grep 工具将这些过滤掉,如下所示

diff file1 file2 | grep "^>"

最后,一旦您获得了您感兴趣的更改列表,您只需在行模式下使用 wc 命令来计算更改的数量。

diff file1 file2 | grep "^>" | wc -l

你有一个完美的例子来说明 Linux 的理念。

【讨论】:

  • 这不会得到 file1 中的行,但不会得到 file2 中的行,例如如果 file1 是“hello”,而 file2 是一个空白文件,则差异将只是“
  • @AndrewNguyen 这里与如何定义线的差异有关。
  • 这种方法有几个问题:首先,它只会找到file2添加的行,而不是file1添加的行。第二个问题是,即使用户同时查找< >,它也不会清楚地说明哪些行只是更改了(其中@ 987654328@ 带有| 字符的模型。)
  • 为什么不让 grep 计数,让我们计算差异,不管哪个文件有差异。 diff file1 file2 | grep -c -e "^<" -e "^>" 在这种情况下,如果您颠倒文件的顺序,您会收到相同的计数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
相关资源
最近更新 更多