Jeśli używasz diff, -uopcja może być bardziej czytelna dla człowieka.
Lekensteyn,
@Rinzwind, oba pliki zawierają tylko tekst 1, ale jeśli chcesz zobaczyć więcej, zajrzyj na pastebin.com/byiqdie1
Jiew Meng
Przepraszam. Nie dzieje się tak, kiedy to robię. Musi być coś innego. Zrób cp 1 2( a więc zastąp 2), a wtedy możesz być w 100% pewien, że są takie same;)
Rinzwind
2
vimdiff file1 file2? : D
dylnmc
Odpowiedzi:
68
Pierwszy wiersz: aoznacza dodany, dusunięty i czmieniony. Numery wierszy oryginalnego pliku pojawiają się przed tymi literami, a numery zmodyfikowanego pliku pojawiają się po literze.
Druga linia: linia z <pochodzi z pliku 1 i różni się od pliku 2.
Trzecia linia to dzielnik.
4. linia: linia z >pochodzi z pliku 2 i różni się od pliku 1.
(Jeśli kiedykolwiek zobaczysz =, oznacza to, że linie są takie same w obu plikach)
Problemem mogą być białe spacje lub inne znaki, które nie są czytelne dla człowieka: one również powodują różnicę.
Istnieje kilka opcji manipulowania danymi wyjściowymi.
Przykład:
rinzwind @ discworld: ~ $ więcej 1
test
test2
test3
rinzwind @ discworld: ~ $ więcej 2
test
test2
test3
„!” reprezentuje zmianę między liniami odpowiadającymi w dwóch plikach. „+” Oznacza dodanie linii, a puste miejsce oznacza niezmienioną linię. Na początku łatki znajdują się informacje o pliku, w tym pełna ścieżka i znacznik czasu. Na początku każdego przystojnika są numery linii, które dotyczą odpowiedniej zmiany w plikach. Zakres liczbowy pojawiający się między zestawami trzech gwiazdek dotyczy oryginalnego pliku, a zestawy trzech myślników dotyczy nowego pliku. Zakresy przystawki określają numery linii początkowej i końcowej w odpowiednim pliku.
Rozszerzając komentarz Lekensteyn na temat ujednoliconego formatu:
Format zaczyna się od tego samego dwuwierszowego nagłówka, co format kontekstowy, z tym że oryginalny plik poprzedza „---”, a nowy plik poprzedza „+++”. Po tym następuje jeden lub więcej fragmentów zmian, które zawierają różnice linii w pliku. Niezmienione linie kontekstowe poprzedzone są spacją, linie dodatkowe poprzedzone są znakiem plus, a linie usuwania poprzedzone są znakiem minus.
Jak sprawdzić, czy są jakieś ukryte postacie? Czy w ogóle można zignorować ukryte znaki (może po prostu wyłączając znaki nowej linii i tabulatory?). Myślę, że większość ukrytych znaków jest przypadkowa?
Jiew Meng
man diff
Wstawiłem
Zauważyłem, że użycie flagi -b działa. Hmm, nie widzę różnicy w białych
znakach
@JiewMeng Uruchom od -x1zna obu plikach i porównaj oddane wyjściowe. Powinien znaleźć wszelkie ukryte różnice między plikami.
lgarzo
6
Uważam, że od (ósemkowy zrzut) jest przydatny podczas porównywania plików ze znakami, które nie są drukowalne (szczególnie pliki, które różnią się między sobą, są „binarne”, a tym samym mówi ci tylko, że różnią się).
W poniższym przykładzie tworzę parę plików, które mogą być podobne do oryginalnych, a następnie robię różnicę z oryginalnym wyjściem; następnie różnicuję na kilku różnych wyjściach „od”.
-u
opcja może być bardziej czytelna dla człowieka.cp 1 2
( a więc zastąp 2), a wtedy możesz być w 100% pewien, że są takie same;)vimdiff file1 file2
? : DOdpowiedzi:
Pierwszy wiersz:
a
oznacza dodany,d
usunięty ic
zmieniony. Numery wierszy oryginalnego pliku pojawiają się przed tymi literami, a numery zmodyfikowanego pliku pojawiają się po literze.Druga linia: linia z
<
pochodzi z pliku 1 i różni się od pliku 2.Trzecia linia to dzielnik.
4. linia: linia z
>
pochodzi z pliku 2 i różni się od pliku 1.(Jeśli kiedykolwiek zobaczysz
=
, oznacza to, że linie są takie same w obu plikach)Problemem mogą być białe spacje lub inne znaki, które nie są czytelne dla człowieka: one również powodują różnicę.
Istnieje kilka opcji manipulowania danymi wyjściowymi.
Przykład:
format kontekstowy:
„!” reprezentuje zmianę między liniami odpowiadającymi w dwóch plikach. „+” Oznacza dodanie linii, a puste miejsce oznacza niezmienioną linię. Na początku łatki znajdują się informacje o pliku, w tym pełna ścieżka i znacznik czasu. Na początku każdego przystojnika są numery linii, które dotyczą odpowiedniej zmiany w plikach. Zakres liczbowy pojawiający się między zestawami trzech gwiazdek dotyczy oryginalnego pliku, a zestawy trzech myślników dotyczy nowego pliku. Zakresy przystawki określają numery linii początkowej i końcowej w odpowiednim pliku.
Rozszerzając komentarz Lekensteyn na temat ujednoliconego formatu:
Format zaczyna się od tego samego dwuwierszowego nagłówka, co format kontekstowy, z tym że oryginalny plik poprzedza „---”, a nowy plik poprzedza „+++”. Po tym następuje jeden lub więcej fragmentów zmian, które zawierają różnice linii w pliku. Niezmienione linie kontekstowe poprzedzone są spacją, linie dodatkowe poprzedzone są znakiem plus, a linie usuwania poprzedzone są znakiem minus.
Kilka przydatnych opcji:
-b
Zignoruj zmiany w ilości białego pola.-w
Zignoruj wszystkie białe znaki.-B
Zignoruj wszystkie puste linie.-y
wyjście w 2 kolumnach.źródło
man diff
od -x1z
na obu plikach i porównajod
dane wyjściowe. Powinien znaleźć wszelkie ukryte różnice między plikami.Uważam, że od (ósemkowy zrzut) jest przydatny podczas porównywania plików ze znakami, które nie są drukowalne (szczególnie pliki, które różnią się między sobą, są „binarne”, a tym samym mówi ci tylko, że różnią się).
W poniższym przykładzie tworzę parę plików, które mogą być podobne do oryginalnych, a następnie robię różnicę z oryginalnym wyjściem; następnie różnicuję na kilku różnych wyjściach „od”.
$ echo 1> 1
$ echo „1”> 2
$ diff 1 2
$ od -c 1> 1.od
$ od -c 2> 2.od
$ diff 1.od 2.od
$ od -Ax -c -t x1 1> 1.od
$ od -Ax -c -t x1 2> 2.od
$ diff 1.od 2.od
źródło
miałem ten sam problem i znalazłem rozwiązanie, które może pomóc, użyj polecenia:
jeden z nich może być w formacie dos / windows, a drugi w formacie UNIX
po tym, jak to zrobiłem, różnica była dobra!
źródło
Nie jestem pewien, czy to pomaga w trudnych do znalezienia białych znakach, ale jest przydatne do różnicowania: http://www.gnu.org/software/wdiff/
źródło
http://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified
Powyższy link zawiera bardziej zwięzły i jasny opis.
źródło