Command-Line
給定兩個文件,我如何找到行更改的總數?
我嘗試使用此命令來計算兩個文件之間更改的行數:
diff -U 0 file1 file2 | grep ^@ | wc -l
我對這個命令的問題是,如果一個文件只有一行,而另一個文件有 100 行,那麼輸出仍然只有 1。
什麼命令會給我更改的總行數,包括一個文件中的總額外行數?
查找以 開頭的行
@
會為您提供找到的更改塊的數量diff
。它們通常不止一行。碰巧,有一個工具可以計算差異的統計資訊:(
diffstat
網站,手冊頁)。計算插入和刪除:
$ diff -u test1 test2 | diffstat test2 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
將同一塊中的插入和刪除組合成單個“修改”操作:
$ diff -u test1 test2 | diffstat -m test2 | 2 -! 1 file changed, 1 deletion(-), 1 modification(!)
此外,您可以使用
diffstat -t
僅獲取已修改行數的表格輸出。測試文件:
$ cat test1 a b c d $ cat test2 a x d