Sortowanie, usuwanie duplikatów i czyszczenie linii
Sortuj linie, usuwaj duplikaty i puste linie, przycinaj spacje.
O tym narzędziu
Wklej listę i ją uporządkuj: przytnij spacje, usuń puste linie, usuń duplikaty (opcjonalnie ignorując wielkość liter) i posortuj alfabetycznie, naturalnie (tak, by item2 było przed item10), według długości, odwrotnie albo przetasuj.
Jak z tego korzystać
- Wklej listę, jeden element w linii.
- Wybierz, co oczyścić: przytnij spacje, usuń puste linie, usuń duplikaty (opcjonalnie ignorując wielkość liter).
- Wybierz kolejność sortowania: naturalna, od A do Z, od Z do A, według długości, odwrócona lub losowa.
- Skopiuj wynik. Linia statusu pokazuje, ile linii i duplikatów usunięto.
Pytania
- Czym jest sortowanie naturalne?
- Sortowanie naturalne porównuje liczby w tekście według ich wartości, więc item2 trafia przed item10. Zwykłe sortowanie alfabetyczne postawiłoby item10 na początku, bo 1 jest przed 2.
- Który duplikat zostaje zachowany?
- Pierwsze wystąpienie każdej linii jest zachowywane, a kolejne kopie są usuwane, więc pierwotna kolejność zostaje zachowana, chyba że dodatkowo sortujesz.
- Czy tasowanie jest wystarczająco losowe do losowania?
- Korzysta z kryptograficznie bezpiecznego generatora liczb losowych przeglądarki i nieobciążonego tasowania Fishera–Yatesa, więc każda kolejność jest równie prawdopodobna.
- Dlaczego niektóre zduplikowane linie nie są usuwane?
- Linie wyglądają tak samo, ale nie są identyczne. Częste przyczyny to niewidoczne znaki: twarda spacja zamiast zwykłej wewnątrz linii, spacja o zerowej szerokości skopiowana ze strony internetowej albo dwie formy Unicode tej samej litery z akcentem. Przytnij spacje czyści tylko końce linii, a przy wyłączonym Ignoruj wielkość liter Apple i apple pozostają osobnymi liniami.
- Czy mogę policzyć, ile razy występuje każda linia?
- Nie tutaj. Linia statusu pokazuje tylko, ile duplikatów usunięto łącznie. Aby policzyć wystąpienia, użyj powłoki: sort list.txt | uniq -c | sort -rn wypisuje każdą unikalną linię z liczbą wystąpień, zaczynając od najczęstszych.
- Ile linii można przetworzyć?
- Nie ma stałego limitu. Listy z dziesiątkami tysięcy linii są przetwarzane na bieżąco podczas pisania, a Otwórz plik przyjmuje pliki tekstowe do 50 MB. Wszystko działa w przeglądarce, więc przy bardzo dużych plikach liczy się pamięć Twojego urządzenia, a nic nie jest przesyłane.
Jak usunąć zduplikowane linie z listy?
Wklej listę, zostaw włączone Usuń duplikaty, a każda linia, która pojawiła się już wcześniej, zostanie usunięta. Przy włączonym Ignoruj wielkość liter Apple i apple liczą się jako ta sama linia, a zachowana zostaje pisownia pierwszej z nich. Przytnij spacje działa przed usuwaniem duplikatów, więc „apple ” ze spacją na końcu pasuje do „apple”, a właśnie taka spacja to najczęstszy powód, dla którego usuwanie duplikatów zdaje się pomijać oczywiste kopie. Linia statusu pokazuje liczbę linii przed i po.
Typowe zastosowania usuwania zduplikowanych linii to czyszczenie listy mailingowej przed importem, scalanie dwóch list nazw hostów lub pakietów i wypisywanie unikalnych wartości kolumny arkusza, którą możesz skopiować z Excela i wkleić bezpośrednio. Dla adresów e-mail zwykle właściwe jest Ignoruj wielkość liter, bo w domenach wielkość liter nie ma znaczenia, a większość dostawców ignoruje ją także w części z nazwą. Dla ścieżek plików i identyfikatorów wrażliwych na wielkość liter wyłącz tę opcję.
Sortowanie linii online a polecenie sort w Uniksie
Od A do Z i Od Z do A sortują linie według reguł locale Twojej przeglądarki, ignorując wielkość liter i akcenty, więc apple, Banana i Éclair wychodzą w kolejności słownikowej. Zwykłe sortowanie bajtowe, jak w sort z LC_ALL=C albo w Array.prototype.sort() bez komparatora, umieszcza każdą wielką literę przed każdą małą, a litery z akcentami za z. Według długości ustawia najkrótsze linie na początku, a remisy rozstrzyga w porządku naturalnym.
Dla porównania, uniksowe odpowiedniki to sort -u do sortowania i usuwania duplikatów, sort -f do ignorowania wielkości liter, sort -V do porządku naturalnego lub według wersji oraz uniq, które usuwa tylko sąsiednie duplikaty i dlatego zwykle uruchamia się je po sort. W przeciwieństwie do uniq to narzędzie usuwa duplikaty w dowolnym miejscu listy i może zachować pierwotną kolejność, gdy Sortuj ustawisz na Zachowaj kolejność. Przetasuj układa listę losowo, a Przetasuj ponownie daje nową kolejność.
Jak usunąć puste linie i przyciąć białe znaki?
Usuń puste linie usuwa linie puste lub zawierające tylko spacje i tabulatory, więc luki pozostałe po skopiowaniu tabeli czy logu znikają. Przytnij spacje usuwa białe znaki na początku i końcu każdej linii, w tym tabulatory i twarde spacje, które często pochodzą ze stron internetowych i plików PDF. Wyłącz przycinanie, gdy wcięcia mają znaczenie, np. w bloku YAML albo fragmencie kodu w Pythonie, i usuń tylko puste linie.
Zakończenia linii są przy okazji normalizowane. Wejście z windowsowymi CRLF i uniksowymi LF jest poprawnie dzielone na linie, a wynik zawsze używa podziałów linii LF. Dzięki temu narzędzia do linii to szybki sposób na wyczyszczenie listy skopiowanej z Excela lub windowsowego pliku tekstowego przed wklejeniem jej do skryptu powłoki, pliku .gitignore czy konfiguracji. Przy długich listach Pobierz zapisuje wynik jako lines.txt.
Coś nie działa albo wynik wygląda na błędny? Zgłoś problem z tym narzędziem