在 diff 输出中获取正确的行数

Bak*_*riu 8 diff wc

我想在 diff 的输出中获得正确的行数(特别是使用-y--suppress-common-lines选项)。使用简单的wc -l工作,因为如果这两个文件没有结束换行符和他们的最后一行是不同的wc -l将不计入最后一行。

有没有简单有效的解决方案来避免这种情况?

例如,如果您有文件“a”:

a
b
c
d   #no newline here
Run Code Online (Sandbox Code Playgroud)

和“b”:

a
b
c
D    #no newline here
Run Code Online (Sandbox Code Playgroud)

输出是:

$ diff -y --suppress-common-lines a b | wc -l
0
Run Code Online (Sandbox Code Playgroud)

这显然是不正确的,因为diff 确实输出了一行。

ire*_*ses 13

没有换行符,所以wc -l是正确的。相反,您想要计算行开头的数量。一种方法:

$ diff -y --suppress-common-lines a b | grep '^' | wc -l
1
Run Code Online (Sandbox Code Playgroud)