2014-12-01 15 views
9

Czy mogę użyć polecenia diff, aby sprawdzić, czy dwa pliki różnią się k liniami?Polecenie diff, aby uzyskać liczbę tylko różnych linii.

Nie chcę różnicy kontekstowej, tylko całkowitą liczbę linii, które różnią się między dwoma plikami. Najlepsze, jeśli wynikiem jest tylko jedna liczba całkowita.

thx!

+1

możliwe duplikat [? Jak liczyć różnice między dwoma plikami w systemie Linux] (http://stackoverflow.com/questions/1566461/how-to-count-differences-between -twojego-plików-na-linux) –

Odpowiedz

14

Tak, można i w prawdziwym systemie Linux można użyć wielu poleceń połączonych ze sobą w celu wykonania zadania.

Najpierw należy użyć polecenia diff, aby uzyskać różnice w plikach.

diff file1 file2 

Otrzymasz wynik listy zmian. Te twoje zainteresowani są linie rozpoczynające się „>” symbolem

użyć grep narzędzie do filtrowania te następująco

diff file1 file2 | grep "^>" 

wreszcie, skoro masz listę zmienia zainteresowani, po prostu użyj polecenia wc w trybie liniowym, aby policzyć liczbę zmian.

diff file1 file2 | grep "^>" | wc -l 

i masz doskonały przykład filozofii, że Linux jest o wszystko.

+0

To nie dostanie linii, które są w pliku1, ale nie plik2, na przykład jeśli plik1 to "cześć", a plik2 jest pustym plikiem, różnica będzie po prostu "

+0

@AndrewNguyen Tutaj jest to związane z definiowaniem różnicy linii. –

+0

To nie działa w ogóle. #thelinuxphilosophy – djechlin

0

diff może wykonać całą pierwszą część pracy, ale bez liczenia; wc zrobi resztę:

diff -y --suppress-common-lines file1 file2 | grep wc -l

Powiązane problemy