Czy można usunąć zduplikowane wiersze w Notepad ++, pozostawiając tylko jedno wystąpienie linii?
źródło
Czy można usunąć zduplikowane wiersze w Notepad ++, pozostawiając tylko jedno wystąpienie linii?
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:
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.źródło
. 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ódło
^(.*\r?\n)(\1)+
Notepad ++
-> Zastąp okno
Upewnij się, że w trybie wyszukiwania wybrałeś przycisk radiowy Wyrażenie regularne
Znajdź co:
Zamienić:
Przed:
Po:
źródło
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ć:
Następnie otwórz plik ponownie w Notepad ++.
źródło
'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:
http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip
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.
źródło
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 ...
źródło
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.Przykład
źródło
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.
źródło
Żadne nie działało dla mnie.
Rozwiązaniem jest:
Zastąpić
z
źródło
^(.*)\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ę.źródło