Command-Line

給定兩個文件,我如何找到行更改的總數?

  • January 10, 2018

我嘗試使用此命令來計算兩個文件之間更改的行數:

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

引用自:https://unix.stackexchange.com/questions/416124