Jon*_*ant 1 command-line grep diff wc
我尝试使用此命令来计算两个文件之间更改的行数:
diff -U 0 file1 file2 | grep ^@ | wc -l
Run Code Online (Sandbox Code Playgroud)
我对这个命令的问题是,如果一个文件只有一行,而另一个文件有 100 行,输出仍然只有 1。
什么命令可以给我更改的总行数,包括一个文件中的总行数?
查找以 开头的行@
会为您提供diff
找到的更改块的数量。它们通常不止一行。
碰巧,有以计数差异的统计工具:diffstat
(网站,手册页)。
计数插入和删除:
$ diff -u test1 test2 | diffstat
test2 | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Run Code Online (Sandbox Code Playgroud)
将同一块中的插入和删除合并为单个“修改”操作:
$ diff -u test1 test2 | diffstat -m
test2 | 2 -!
1 file changed, 1 deletion(-), 1 modification(!)
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用diffstat -t
仅获取修改行数的表格输出。
测试文件:
$ cat test1
a
b
c
d
$ cat test2
a
x
d
Run Code Online (Sandbox Code Playgroud)