
🗑 Jak usunąć zduplikowane wiersze w Notepad++: 3 sposoby
Duplikaty wierszy w logach, eksportach CSV i plikach konfiguracyjnych to ból głowy znany każdemu, kto choć raz ręcznie analizował 500-megabajtowy zrzut bazy danych. Otwiera Pan plik, a tam połowa wierszy się powtarza. Ręczne usuwanie to beznadziejne zadanie przy tysiącach linii.
Notepad++ rozwiązuje ten problem w kilka sekund. W arsenale edytora są trzy sposoby: od wbudowanej funkcji dostępnej na dwa kliknięcia po wyrażenia regularne do złożonych scenariuszy. Proszę wybrać odpowiedni do swojego zadania.
💡 Szybki przegląd:
- Sposób 1, wbudowana funkcja: Edit → Line Operations → Remove Duplicate Lines. Dwa kliknięcia, działa od wersji 7.6+, 64-bit.
- Sposób 2, wyrażenie regularne: usuwa duplikaty bez sortowania, zachowując kolejność wierszy. Elastyczna konfiguracja.
- Sposób 3, wtyczka TextFX: klasyka, ale tylko dla wersji 32-bitowej. Dla wersji 64-bitowej dostępny jest fork TextFX2.
Sposób 1: wbudowana funkcja Notepad++
Najprostsza i najszybsza metoda. Pojawiła się w wersji 7.6 i działa we wszystkich nowoczesnych wydaniach, włącznie z aktualną v8.9.6. Nie trzeba instalować żadnych wtyczek, wszystko jest dostępne od razu.
Proszę otworzyć plik w Notepad++, zaznaczyć całą zawartość (Ctrl + A) i przejść do menu Edit → Line Operations → Remove Duplicate Lines. Gotowe, wszystkie powtarzające się wiersze zostały usunięte, pozostały tylko unikalne.
Jest tu również opcja Remove Consecutive Duplicate Lines, która usuwa tylko te duplikaty, które występują jeden po drugim, nie ruszając takich samych wierszy w innych miejscach pliku. Przydatne do czyszczenia logów, gdzie powtórzenia gromadzą się blokami.
Proszę zwrócić uwagę: funkcja usuwa WSZYSTKIE duplikaty, pozostawiając tylko pierwsze wystąpienie każdego wiersza. Jeśli w pliku są znaczące powtórzenia (na przykład identyczne nawiasy zamykające w JSON lub XML), ten sposób nie będzie odpowiedni. W takim przypadku proszę spojrzeć na sposób 2 z wyrażeniem regularnym.
Sposób 2: wyszukiwanie i zamiana za pomocą wyrażenia regularnego
Wyrażenie regularne daje pełną kontrolę. W przeciwieństwie do wbudowanej funkcji, pozwala usunąć duplikaty bez wcześniejszego sortowania, wiersze pozostają w oryginalnej kolejności, a powtórzenia znikają.
Proszę otworzyć okno wyszukiwania (Ctrl + H), przełączyć się na zakładkę Replace i wypełnić pola:
Pole | Wartość |
|---|---|
Find what |
|
Replace with | (proszę pozostawić puste) |
Search Mode | Regular expression |
. matches newline | Proszę odznaczyć |
Proszę kliknąć Replace All. Notepad++ przejdzie przez cały plik, znajdzie wiersze, które powtarzają się gdzieś dalej, i usunie je. W rezultacie dla każdego zestawu duplikatów pozostanie ostatnie wystąpienie.
Jak to działa: ^(.*?)$ przechwytuje wiersz do pierwszej grupy, \s+? przeskakuje białe znaki między wierszami, a (?=.*^\1$) to pozytywne przewidywanie (positive lookahead), które sprawdza, czy ten sam wiersz (\1) pojawi się dalej w pliku. Jeśli tak, bieżące wystąpienie jest usuwane.
Zaletą wyrażenia regularnego jest to, że wzorzec można dostosować. Na przykład dodać ^ na początek przechwytywania, jeśli potrzebne jest dokładne dopasowanie od początku wiersza, lub zastąpić \s+? przez \r?\n dla ścisłego powiązania ze znakiem nowej linii.
Sposób 3: wtyczka TextFX
Klasyczna metoda, która ma już wiele lat. TextFX była standardową wtyczką w starych 32-bitowych wydaniach Notepad++. Dziś sytuacja się zmieniła: oryginalny TextFX nie jest kompatybilny z wersją 64-bitową, począwszy od v8.4, i został wyłączony ze standardowej dystrybucji.
Jeśli korzysta Pan z 32-bitowego Notepad++, wtyczkę instaluje się przez Plugins → Plugin Manager → Show Plugin Manager → Available → TextFX → Install. Po instalacji w menu pojawi się sekcja TextFX → TextFX Tools.

Proszę upewnić się, że zaznaczona jest opcja Sort lines case sensitive (lub case insensitive, według wyboru). Proszę zaznaczyć tekst (Ctrl + A) i kliknąć Sort lines case sensitive. Wtyczka posortuje wiersze, duplikaty znajdą się obok siebie. Następnie opcja w menu Edit → Line Operations → Remove Consecutive Duplicate Lines usunie powtórzenia.
Dla wersji 64-bitowej istnieje nowoczesny fork, TextFX2. Jest dostępny na GitHubie (rainman74/NPPTextFX2) i instaluje się go ręcznie: proszę pobrać plik DLL, umieścić go w folderze plugins\NPPTextFX2 wewnątrz katalogu Notepad++ i ponownie uruchomić edytor. Funkcjonalność jest taka sama: sortowanie, usuwanie duplikatów, konwersja wielkości liter.
Jeśli zadanie jest jednorazowe, a nie chce Pan instalować wtyczki, sposób 1 jest w zupełności wystarczający.
⁉️🤔 Często zadawane pytania
Dlaczego Notepad++ nie usuwa wszystkich duplikatów?
Najprawdopodobniej wiersze nie są identyczne bajt po bajcie. Proszę sprawdzić niewidoczne znaki: zbędne spacje na końcu, tabulację zamiast spacji, różną wielkość liter. Proszę włączyć View → Show Symbol → Show All Characters, będzie widać, czym wiersze się różnią.
Jak usunąć duplikaty BEZ uwzględniania wielkości liter?
Wbudowana funkcja Remove Duplicate Lines uwzględnia wielkość liter: wiersze „WordPress" i „wordpress" są dla niej różne. Aby usunąć duplikaty bez uwzględniania wielkości liter, proszę najpierw ujednolicić wielkość liter w tekście przez Edit → Convert Case to → Lowercase (lub Uppercase), a następnie uruchomić Remove Duplicate Lines. Można też użyć sposobu 2 z flagą regex
(?i)na początku wzorca.
Czy można usunąć duplikaty w wielu plikach jednocześnie?
Notepad++ nie obsługuje wielokrotnego wyszukiwania z zamianą przez regex za pomocą standardowego interfejsu. Można jednak użyć Find in Files (Ctrl + Shift + F), które znajdzie wiersze według regex we wszystkich plikach w folderze. Do wsadowej zamiany w wielu plikach wygodniejszy jest skrypt w Pythonie lub PowerShellu: odczytuje Pan plik, stosuje regex, nadpisuje. Można też użyć wtyczki Python Script do Notepad++ z własnym skryptem.
Co jest szybsze na dużym pliku, wbudowana funkcja czy regex?
Wbudowana funkcja Remove Duplicate Lines jest odczuwalnie szybsza na plikach od 50 MB wzwyż, to natywny kod C++, a nie silnik wyrażeń regularnych. Metoda regex zaczyna zauważalnie zwalniać na setkach tysięcy wierszy z powodu sprawdzeń lookahead. Dla porównania: na pliku CSV o 200 000 wierszy wbudowana funkcja działa 2-3 sekundy, regex 15-20.
Usunąłem duplikaty, jak cofnąć, jeśli to nie to?
Ctrl + Z cofa ostatnią operację. Jeśli zamknął Pan plik bez zapisywania, proszę po prostu nie zapisywać zmian przy wyjściu. W każdym razie przed masowymi edycjami proszę skopiować plik źródłowy do sąsiedniego folderu, zajmuje to sekundę, a oszczędza godziny.
Który sposób wybrać do swojego zadania
Jeśli potrzebuje Pan szybko oczyścić logi lub CSV z powtórzeń, proszę użyć wbudowanej funkcji (sposób 1). Dwa kliknięcia, natychmiastowy rezultat, żadnych wtyczek. To domyślny wybór dla zdecydowanej większości scenariuszy. Wynik widoczny jest od razu, bez dodatkowych działań.
Regex (sposób 2) proszę wybrać, gdy ważna jest oryginalna kolejność wierszy lub potrzebne jest precyzyjne dostrojenie: usuwanie duplikatów tylko w zaznaczonym fragmencie, ignorowanie wielkości liter, przetwarzanie zagnieżdżonych powtórzeń. Bardziej zaawansowane, ale wymaga zrozumienia składni.
TextFX (sposób 3) tylko wtedy, gdy korzysta Pan z wersji 32-bitowej i jest przyzwyczajony do tego przepływu pracy. Dla wersji 64-bitowej jest TextFX2, ale wraz z pojawieniem się wbudowanej funkcji sens korzystania z wtyczki prawie zniknął.
Proszę wypróbować wbudowaną funkcję teraz na dowolnym pliku tekstowym z powtórzeniami. Zajmie to 5 sekund.



