Odpowiedzi:
Notepad ++ może to zrobić, pod warunkiem, że chcesz sortować według linii i usuwać zduplikowane linie w tym samym czasie.
Będziesz potrzebował wtyczki TextFX. To było dołączane do starszych wersji Notepad ++, ale jeśli masz nowszą wersję, możesz dodać ją z menu, przechodząc do Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install
. W niektórych przypadkach można go również nazwać TextFX Characters
, ale to jest to samo
Pola wyboru i przyciski wymagane będą teraz wyświetlane w menu poniżej: TextFX -> TextFX Tools
.
Upewnij się, że zaznaczono opcję „sortuj tylko unikalne ...”. Następnie wybierz blok tekstu ( Ctrl+, Aaby zaznaczyć cały dokument). Na koniec kliknij „sortuj linie z rozróżnianiem wielkości liter” lub „sortuj linie bez rozróżniania wielkości liter”
Od wersji 6 Notatnika ++ możesz używać tego wyrażenia regularnego w dialogu wyszukiwania i zamiany:
^(.*?)$\s+?^(?=.*^\1$)
i zastąpić niczym . Pozostawia to ze wszystkich zduplikowanych wierszy ostatnie wystąpienie w pliku.
W tym celu nie jest wymagane sortowanie, a zduplikowane wiersze mogą znajdować się w dowolnym miejscu pliku!
Musisz zaznaczyć opcje „Wyrażenie regularne” i „. Pasuje do nowego wiersza”:
^
dopasowuje początek linii.
(.*?)
dopasowuje dowolne znaki 0 lub więcej razy, ale tak mało jak to możliwe (pasuje dokładnie w wierszu, jest to konieczne ze względu na opcję „. pasuje do nowej linii”). Dopasowany wiersz jest przechowywany ze względu na nawiasy wokół i dostępny przy użyciu\1
$
dopasowuje koniec linii.
\s+?^
ta część pasuje do wszystkich białych znaków (nowych linii!) do początku następnego wiersza ==> Usuwa to nowe wiersze po dopasowanym wierszu, dzięki czemu po wymianie nie ma pustego wiersza.
(?=.*^\1$)
jest to pozytywne stwierdzenie z wyprzedzeniem. Jest to ważna część tego wyrażenia regularnego, wiersz jest dopasowywany (i usuwany) tylko wtedy, gdy dokładnie ten sam wiersz występuje w innym miejscu pliku.
. matches newline
zrobiło lewę.
Jeśli wiersze znajdują się bezpośrednio po sobie, możesz użyć wyrażenia regularnego:
Wzór wyszukiwania: ^(.*\r?\n)(\1)+
Zamienić: \1
^(.*\r?\n)(\1)+
Notepad ++
-> Zastąp okno
Upewnij się, że w trybie wyszukiwania wybrałeś przycisk radiowy Wyrażenie regularne
Znajdź co:
^ (. *) (\ r? \ n \ 1) + $
Zamienić:
1 USD
Przed:
i myślimy tam
i myślimy tam
pojedyncza linia
Czy jest możliwe
Czy jest możliwe
Po:
i myślimy tam
pojedyncza linia
Czy jest możliwe
Jeśli nie obchodzi Cię kolejność wierszy (co nie wydaje mi się, że tak), możesz użyć pola Linux / FreeBSD / Mac OS X / Cygwin i wykonać:
$ cat yourfile | sort | uniq > yourfile_nodups
Następnie otwórz plik ponownie w Notepad ++.
'cat' is not recognized as an internal or external command, operable program or batch file.
cat yourfile | sort -Unique
Te ostatnie wersje Notepad ++ najwyraźniej w ogóle nie zawierają wtyczki TextFX. Aby użyć wtyczki do sortowania / eliminowania duplikatów, wtyczka musi zostać pobrana i zainstalowana (bardziej zaangażowana) lub dodana za pomocą menedżera wtyczek.
A) Łatwy sposób (jak opisano tutaj ).
Wtyczki -> Menedżer wtyczek -> Pokaż menedżera wtyczek -> Karta Dostępne -> Znaki TextFX -> Zainstaluj
B) Bardziej zaangażowany sposób, jeśli potrzebna jest inna wersja lub prosty sposób nie działa.
Pobierz wtyczkę z SourceForge:
Otwórz plik zip i wypakuj NppTextFX.dll
Umieść NppTextFX.dll w katalogu wtyczek Notepad ++, takich jak:
C: \ Program Files \ Notepad ++ \ plugins
Uruchom Notepad ++, a TextFX będzie jednym z elementów menu plików (jak widać w odpowiedzi nr 1 powyżej autorstwa Colina Pickarda)
Po zainstalowaniu wtyczki TextFX postępuj zgodnie z instrukcjami w odpowiedzi nr 1, aby posortować i usunąć duplikaty.
Rozważ także skonfigurowanie skrótu klawiaturowego za pomocą opcji Ustawienia> Odwzorowanie skrótów, jeśli często używasz tego polecenia lub chcesz powielać skrót klawiaturowy, na przykład F9 w programie TextPad do sortowania.
C:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppTextFX
. Poza tym nadal działa dobrze.
W wersji 7.8 możesz to zrobić bez żadnych wtyczek - Edycja -> Operacje na liniach -> Usuń kolejne zduplikowane linie. Będziesz musiał posortować plik, aby umieścić zduplikowane linie w kolejnej kolejności, zanim to zadziała, ale działa to jak urok.
Opcje sortowania są dostępne w Edycja -> Operacje liniowe -> Sortuj według ...
Do tego może być potrzebna wtyczka. Możesz wypróbować wiersz poleceń cc.ddl
(usuń duplikaty) ConyEdit . Jest to wtyczka między edytorami do edytorów tekstu, w tym Notepad ++.
Gdy ConyEdit działa w tle, wykonaj następujące czynności:
cc.ddl
na końcu tekstu. Wyszukaj wyrażenie regularne: \b(\w+)\b([\w\W]*)\b\1\b
Zamień na: $1$2
Naciśnij przycisk Zamień , aż w twoim pliku nie będzie już pasujących wyrażeń regularnych.
Żadne nie działało dla mnie.
Rozwiązaniem jest:
Zastąpić
^(.*)\s+(\r?\n\1\s+)+$
z
\1
^(.*)\s+(\r?\n\1\s+)+$
nie ^(.*)\s*(\r?\n\1\s*)+$
?
Menedżer wtyczek jest obecnie niedostępny (nie jest dostarczany z dystrybucją) dla Notepad ++. Musisz zainstalować go ręcznie ( https://github.com/bruderstein/nppPluginManager/releases ), a nawet jeśli to zrobisz, wiele wtyczek nie będzie już dostępnych (brak TextFX).
Być może istnieje inna wtyczka, która zawiera wymaganą funkcjonalność. Poza tym jedynym sposobem na to w Notepad ++ jest użycie specjalnego wyrażenia regularnego do dopasowania, a następnie zastąpienia ( Ctrl+ F→ karta Zamień ).
Chociaż w menu Edycja dostępnych jest wiele funkcji (przycinanie, usuwanie pustych wierszy, sortowanie, konwersja EOL), nie jest dostępna żadna „unikalna” operacja.
Jeśli masz Windows 10, możesz włączyć Bash (po prostu wpisz Ubuntu w Microsoft Store i postępuj zgodnie z instrukcjami w opisie, aby go zainstalować) i użyj cat your_file.txt | sort | uniq > your_file_edited.txt
. Oczywiście musisz znajdować się w tym samym katalogu roboczym, co „twoj_plik.txt” lub odwoływać się do niego przez ścieżkę.