Answers:
没有换行符,所以wc -l
是正确的。相反,您要计算行的开始数量。一种方法:
$ diff -y --suppress-common-lines a b | grep '^' | wc -l
1
没错 行必须以LF字符结尾,否则,它不是行(无论如何wc -l
,记录下来它是用来计数换行符,而不是行)。
您可以将输出传递到可以添加丢失的LF字符的内容中。GNU粘贴可以做到:
$ diff -y --suppress-common-lines <(printf a) <(printf b) | wc -l
0
$ diff -y --suppress-common-lines <(printf a) <(printf b) | paste | wc -l
1
它可能无法与其他粘贴实现一起使用,但是由于您使用的GNU特定选项diff
,因此我们可以放心地假设您也具有GNU paste
。POSIX未指定未终止行的文本实用程序的行为。
如手册页和信息页中所述,似乎-l
(--lines
)选项用于wc
打印换行符的数量。因此,如果一行不以换行符结尾,则不会增加计数。