Jak porównać dwa pliki tekstowe i zobaczyć, co się zmieniło

Najszybszy sposób na porównanie dwóch plików tekstowych to wklejenie obu do narzędzia diff wyświetlającego je obok siebie i odczytanie linii, które zostaną podświetlone. Zielony oznacza to, co dodano, czerwony to, co usunięto, a zmieniona linia pokazuje się jako jedno i drugie. Bez instalacji, bez wysyłania, gotowe w kilka sekund.

To pokrywa większość przypadków. Ale dwa pliki, które na ekranie wyglądają identycznie, wciąż mogą różnić się bajt po bajcie, i właśnie tutaj ludzie tracą całe popołudnie. Ten przewodnik pokazuje szybką metodę, przykład krok po kroku, niewidoczne różnice, o których warto wiedzieć, oraz to, gdzie chatbot AI taki jak ChatGPT naprawdę pomaga. Jeśli chcesz po prostu skorzystać z narzędzia, nasza strona porównywania tekstu wykonuje całość w Twojej przeglądarce.

Co tak naprawdę oznacza "porównywanie dwóch plików tekstowych"

Plik tekstowy to ciąg znaków podzielony na linie. Porównanie dwóch takich plików oznacza dopasowanie części, które pasują, i oznaczenie części, które się różnią. Klasycznym narzędziem do tego jest uniksowe narzędzie diff, a każda nowoczesna przeglądarka diff, w tym nasza, wykonuje to samo zadanie z bardziej przyjaznym wyświetlaniem.

Większość narzędzi diff działa najpierw linia po linii. Dzięki temu są szybkie przy długich plikach i odpowiadają temu, jak czytają ludzie: skanujesz w poszukiwaniu linii, która się przesunęła, a potem zaglądasz do niej po słowo, które się zmieniło. Nasz silnik jest zbudowany na diff-match-patch od Google, które wykonuje przebieg w trybie linii, zanim spojrzy na pojedyncze znaki, więc tysiącwierszowy log wciąż diffuje się natychmiast.

Sposoby porównywania dwóch plików tekstowych

Nie ma jednej właściwej metody. Zależy to od tego, gdzie znajdują się pliki i jak dokładny musisz być.

MetodaNajlepsza doDokładna?Wysiłek
Czytanie ich obok siebieKilka linii, jedna oczywista zmianaTy jesteś sędziąNiski
Narzędzie diff onlineSzybkie sprawdzenia, wklejanie z dowolnego miejscaTak, dokładne co do znakuNiski
Wiersz poleceń (diff, git diff)Pliki na dysku, skrypty, ogromne plikiTakŚredni
Edytor kodu (VS Code "Compare")Pliki już otwarte w Twoim edytorzeTakNiski
Chatbot AI (ChatGPT)Podsumowanie zmiany prostym językiemNie, może pominąć lub przeformułowaćNiski

Do jednorazowego sprawdzenia narzędzie przeglądarkowe wygrywa szybkością, bo nie ma nic do zainstalowania i możesz wkleić prosto z e-maila, loga lub przeglądu kodu. Dla plików już śledzonych w repozytorium git diff jest na wyciągnięcie ręki. Wrócimy do opcji AI, ponieważ jest ona naprawdę przydatna do właściwego zadania i pułapką przy niewłaściwym.

Porównaj dwa pliki tekstowe w przeglądarce, krok po kroku

To jest rutyna, gdy ktoś przysyła Ci dwie wersje dokumentu i pyta "co się różni?" Zajmuje to około dziesięciu sekund.

  1. Otwórz narzędzie do porównywania tekstu.
  2. Wklej oryginał po lewej, a nową wersję po prawej. Albo użyj Prześlij, aby wczytać plik prosto z dysku.
  3. Odczytaj podświetlenia. Dodane linie są zielone, usunięte linie są czerwone, a linia, która się zmieniła, pokazuje się jako para czerwono-zielona.
  4. Przewiń zmienione linie. Wewnątrz każdej z nich zaznaczone są dokładne słowa, które się różnią, więc nie musisz ponownie czytać całej linii.
  5. Jeśli dwa pliki wyglądają na znacznie bardziej różne, niż powinny, przejdź do sekcji o niewidocznych różnicach poniżej.

Przykład krok po kroku

Powiedzmy, że współpracownik odsyła edytowany akapit i prosi Cię o sprawdzenie jego zmian. Oto Twój oryginał:

The service starts at 9am on weekdays.
Refunds are processed within 14 days.
Contact [email protected] for help.

A oto jego wersja:

The service starts at 8am on weekdays.
Refunds are processed within 30 days.
Contact [email protected] for help.
Priority support is available on request.

Wrzuć oba do diffa, a prawdziwa historia jest krótka, mimo że łatwo ją przeoczyć w prozie:

Co się naprawdę zmieniło
LiniaPrzedPoZmiana
Godzina rozpoczęcia9am8amZmodyfikowano
Okno zwrotu14 days30 daysZmodyfikowano
Linia wsparcia[email protected][email protected]Bez zmian
Wsparcie priorytetowebrakPriority support is available on request.Dodano

Dwie liczby się zmieniły i dodano jedno zdanie. Podwojenie okna zwrotu z 14 na 30 dni to rodzaj zmiany, którą chcesz wychwycić, zanim trafi do wdrożenia, a jest o jeden znak od bycia niewidoczną przy szybkim czytaniu. To cały argument za tym, by diffować tekst zamiast ufać własnym oczom.

Niewidoczne różnice, które sprawiają ludziom kłopoty

Czasami diff maluje dwa pliki jako całkowicie różne, choć na ekranie wyglądają identycznie. Przyczyną jest niemal zawsze znak, którego nie widać. Oto zwykli podejrzani.

Niewidoczna różnicaSkąd się bierzeCo zrobić
Zakończenia wierszy: CRLF vs LFJeden plik zapisano na Windowsie, drugi na macOS lub LinuksieZnormalizuj zakończenia wierszy; zobacz konwencje znaku nowej linii
Białe znaki na końcuSpacje lub tabulatory pozostawione na końcu liniiUsuń białe znaki na końcu albo je zignoruj, jeśli Twoje narzędzie to potrafi
Znacznik kolejności bajtów (BOM)Edytor dodał niewidoczny znacznik do pierwszej liniiZapisz jako UTF-8 bez BOM
Tabulatory vs spacjeRóżne edytory lub ustawienia wcięćWybierz jedno i przekonwertuj; oba wyglądają tak samo na ekranie
Kodowanie tekstuJeden plik to UTF-8, drugi Latin-1, więc znaki z akcentami różnią się bajtamiZapisz ponownie oba jako UTF-8
Spacje nierozdzielająceWklejone ze strony internetowej lub edytora tekstuZnajdź i zamień je na zwykłe spacje

Ta, która gryzie najmocniej, to zakończenia wierszy. Plik z Windowsa używa powrotu karetki plus wysunięcia wiersza (CRLF) na końcu każdej linii; plik z Maca lub Linuksa używa tylko wysunięcia wiersza (LF). Otwórz oba w tym samym edytorze, a wyglądają tak samo, ale każda pojedyncza linia różni się na poziomie bajtów, więc naiwny diff rozświetla się jak choinka. Jeśli cały Twój plik pokazuje się jako zmieniony, sprawdź to najpierw.

Czy ChatGPT może porównać dwa pliki?

Tak, i wiele osób teraz robi dokładnie to: wkleja dwie wersje do ChatGPT (lub innego asystenta AI) i pyta "co się zmieniło?" Dla krótkich plików działa to dobrze i daje coś, czego zwykły diff nie może: podsumowanie zwykłym językiem. "Okno zwrotu zmieniło się z 14 na 30 dni i dodano linię o wsparciu priorytetowym" jest często bardziej przydatne dla zabieganego czytelnika niż ściana czerwieni i zieleni.

Haczyk tkwi w precyzji. Model językowy nie jest algorytmem diff. Może pominąć zmianę jednego znaku, po cichu przeformułować linię podczas podsumowywania albo zabraknąć mu miejsca na długim pliku i pominąć środek. Oznacza to też oddanie Twojego tekstu stronie trzeciej, czego możesz nie chcieć przy czymkolwiek wrażliwym. Więc te dwa rodzaje narzędzi to uzupełnienia, a nie rywale.

Dobry sposób pracy: najpierw przepuść pliki przez deterministyczne narzędzie diff, aby uzyskać dokładną, wierną co do znaku listę zmian, a potem wklej tę krótką listę do chatbota AI i poproś, by wyjaśnił jej wpływ prostym językiem. Dostajesz dokładność diffa i czytelność podsumowania, bez ufania żadnemu z nich, że wykona zadanie tego drugiego.

Porównywanie plików w wierszu poleceń

Jeśli pliki są już na dysku, wbudowane polecenie diff to jedna linia:

diff old.txt new.txt

Dodaj -u dla formatu zunifikowanego, którego używa Git, albo -w, aby zignorować różnice w białych znakach. Dla plików w repozytorium git diff old.txt new.txt robi to samo z kolorem i podświetlaniem na poziomie słów. Narzędzie przeglądarkowe to wersja tego bez terminala: wklej, przeczytaj, gotowe.

Powiązane narzędzia

Zwykły tekst rzadko jest jedyną rzeczą, którą porównujesz. Jeśli Twoje pliki są ustrukturyzowane, widok świadomy formatu czyta się lepiej: porównaj JSON radzi sobie z przestawionymi kluczami i szumem wcięć, a porównaj CSV dopasowuje wiersze i kolumny. Uporządkowanie bałaganiarskiej listy przed jej diffowaniem to zadanie dla usuwania zduplikowanych linii i sortowania linii.

Najczęściej zadawane pytania

Czy porównywanie plików tekstowych online wysyła je gdziekolwiek?
Na comparetext.org porównanie działa w Twojej przeglądarce. Oba pliki są diffowane przez JavaScript na Twojej własnej maszynie, więc nic nie jest wysyłane na serwer, chyba że celowo klikniesz Zapisz lub Udostępnij. To sprawia, że jest to bezpieczne dla szkiców, umów, konfiguracji i wszystkiego innego, czego nie chciałbyś wklejać na stronę, która wysyła dane przy każdym naciśnięciu klawisza.
Dlaczego moje dwa pliki tekstowe pokazują każdą linię jako różną?
Prawie zawsze chodzi o zakończenia wierszy. Jeden plik zapisano na Windowsie (CRLF), a drugi na macOS lub Linuksie (LF), więc każda linia różni się na poziomie bajtów, mimo że wyglądają identycznie. Ukryty znacznik kolejności bajtów (BOM) w pierwszej linii albo tabulatory kontra spacje mogą zrobić to samo. Znormalizuj zakończenia wierszy i zapisz ponownie oba jako UTF-8, a potem diffuj ponownie.
Czy mogę porównać dwa pliki tekstowe bez instalowania czegokolwiek?
Tak. Otwórz narzędzie do porównywania tekstu, wklej jeden plik po lewej, a drugi po prawej, albo użyj Prześlij, aby wczytać je z dysku. Diff pojawia się natychmiast, prosto w przeglądarce, ze zmienionymi liniami podświetlonymi. Nie ma nic do pobrania i nie trzeba zakładać konta.
Czy ChatGPT może porównać dla mnie dwa pliki?
Może, i przydaje się to do podsumowania prostym językiem tego, co się zmieniło w krótkich plikach. Ale model językowy nie jest algorytmem diff: może pominąć małą zmianę, przeformułować linię podczas podsumowywania albo pominąć środek długiego pliku. Dla dokładnego, wiernego co do znaku porównania użyj narzędzia diff, a potem przekaż wynik do AI, jeśli chcesz, by wyjaśniło je słowami.
Jak porównać dwa pliki i zignorować białe znaki?
W wierszu poleceń diff -w old.txt new.txt ignoruje różnice w białych znakach, a diff -b ignoruje zmiany w ilości białych znaków. W przeglądarce usuń spacje na końcu i znormalizuj zakończenia wierszy przed wklejeniem, ponieważ to te zmiany białych znaków najczęściej zaśmiecają diff. Celem jest pozostawienie tylko tych zmian, które zmieniają znaczenie.
Jaka jest różnica między porównywaniem tekstu a porównywaniem kodu?
Mechanika jest taka sama: oba dopasowują pasujące linie i oznaczają resztę. Różnica polega na tym, co liczy się jako prawdziwa zmiana. W prozie przeformatowany akapit może wyglądać jak duża edycja, gdy przesunęło się tylko słowo. W kodzie liczą się wcięcia i przeniesiona funkcja. Widok świadomy formatu, taki jak porównanie JSON, lub edytor świadomy języka redukuje ten szum dla plików ustrukturyzowanych.

Gotowy, by spróbować? Wklej swoje dwa pliki do narzędzia do porównywania tekstu i zobacz, co się zmieniło.