我想在 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)