Jak mogę posortować plik tekstowy według długości linii w notatniku ++? Czy jest dostępna wtyczka do wspomnianego zadania?
W przypadku, gdy nie ma wtyczki, jaki jest pierwszy i może drugi samouczek do przeczytania, aby samemu napisać wtyczkę?
Jak mogę posortować plik tekstowy według długości linii w notatniku ++? Czy jest dostępna wtyczka do wspomnianego zadania?
W przypadku, gdy nie ma wtyczki, jaki jest pierwszy i może drugi samouczek do przeczytania, aby samemu napisać wtyczkę?
Odpowiedzi:
Ta odpowiedź jest inspirowana filmem na YouTube . Zaktualizowano, aby zachować oryginalny porządek sortowania, jeśli jest to ważne.
Notepad ++ ma wbudowane narzędzie TextFX, które sortuje wybrane linie alfabetycznie. To narzędzie można przejąć, aby posortować według długości linii, umieszczając spacje po lewej stronie każdej linii i upewniając się, że wszystkie linie są tej samej długości.
„Zoo” pojawia się alfabetycznie przed „Ich domem”, ponieważ przestrzeń jest traktowana jako znak i występuje przed „i”. __X
(udawanie, że podkreślenia są naprawdę spacjami), podobnie jak wcześniej _XX
. Ideą tej odpowiedzi jest dodanie spacji i numerów wierszy, __________092dog
aby zostały posortowane powyżej _003alligator
.
Użyję następujących danych przykładowych:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Krok 1. Dodaj numery linii.
(Uwaga dodana przez barlop - uwaga dla czytelnika dotycząca tego kroku, nie będziemy sortować według tych numerów linii, sortujemy według długości linii. Ale powodem dodania numerów linii jest to, że znamy porządek naturalny, aby np. gdy dwie + linie mają równą długość, możemy sortować te linie zgodnie z tym porządkiem naturalnym)
Zakładając, że plik tekstowy zawiera tylko dane, umieść kursor tekstowy (linia pionowa) w pierwszej pozycji pliku. Następnie w Edit
menu wybierz Column Editor...
( Alt+ C). Wybierz „Liczba do wstawienia” i zacznij od 1, zwiększ o 1 i dołącz początkowe zera. Pamiętaj, że zachowa to oryginalne uporządkowanie podczas sortowania od najkrótszego ciągu do najdłuższego ciągu. Najpierw odwróć wszystkie linie, jeśli chcesz posortować od najdłuższego do najkrótszego.
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
Krok 2. Wypełnij wszystkie linie wiodącymi spacjami.
Umieść kursor tekstowy (linia pionowa) w pierwszej pozycji pliku. Następnie w Edit
menu wybierz Column Editor...
( Alt+ C). Wstaw wystarczająco dużo spacji, aby najkrótsza linia danych została uzupełniona do długości najdłuższej linii danych. Jeśli twoja najkrótsza linia ma 4 znaki, a najdłuższa 44, upewnij się, że wstawiłeś co najmniej 40 spacji.
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
Krok 3. Przytnij linie do jednakowej długości.
Użyj następującego wyrażenia regularnego Znajdź / Zamień ( Ctrl+ H), aby dopasować prawe znaki równe lub przekraczające długość najdłuższej linii danych.
^.*(.{50})$
Zamień wszystko na $1
. Spowoduje to przycięcie wszystkiego oprócz 50 najbardziej odpowiednich znaków w każdej linii. Jeśli twoje dane są dłuższe (lub krótkie) niż 50, dostosuj {50}
w Wyrażeniu regularnym.
(Uwaga dodana przez barlop - chodzi tutaj o to, że najkrótsze linie mają najwięcej spacji na początku )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
Krok 4. Sortuj linie.
Zaznacz cały tekst ( Ctrl+ A). W menu TextFX przejdź do Text FX > TextFX Tools > Sort lines case sensitive (at column)
. Twoje dane powinny być teraz uporządkowane według długości, od najkrótszej do najdłuższej. Jeśli chcesz je uporządkować od najdłuższego do najkrótszego, usuń zaznaczenie Text FX > TextFX Tools > + Sort ascending
opcji przed sortowaniem. Zwróć też uwagę na odwrócenie numerów linii.
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
Krok 5. Usuń spacje wiodące.
Użyj innego wyrażenia regularnego Znajdź / Zamień ( Ctrl+ H), aby dopasować wiodące spacje.
^ *\d{4}
To przestrzeń między karetką a gwiazdką. Zastąp wszystko niczym. Spowoduje to usunięcie wszystkich początkowych spacji i wstawionych numerów linii, jeśli masz 4-cyfrowe numery linii. Zamień na {4}
prawidłową liczbę cyfr w numerach linii.
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MAKRO
Powyższe kroki nagrałem za pomocą funkcji makra Notepad ++ i to nie działa. Nie jestem pewien, który krok się nie powiedzie, ale nie zdiagnozowałem, dlaczego. Prawdopodobnie możesz użyć AutoHotKey do zautomatyzowania tego, jeśli robisz to wielokrotnie.
^ *\d{5}
lub jakiejkolwiek liczby cyfr użyto dla numerów linii.
Nie, nie sądzę, żeby tak było. Najbliższa jest wtyczka TextFx, ale to sortowanie oparte na znakach, a nie oparte na długości linii. Najlepszym rozwiązaniem jest wrzucenie tekstu do arkusza kalkulacyjnego i posortowanie go (za pomocą oddzielnej kolumny obliczeniowej za pomocą LEN()
funkcji).
Możesz używać SQL w N ++ w plikach CSV! Na przykład, jeśli masz:
col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;
, możesz wykonać polecenie select * from data order by length(col1) desc
sortowania malejącego. „dane” oznaczają bieżący plik. „col1” - nazwa pierwszej (i ostatniej) kolumny.
Niestety prawdopodobnie istnieje błąd, który nie pozwala porzucić separatora po wierszach w tekście jednokolumnowym.
Lub jeśli zdarzy ci się mieć Linuksa i Nedita:
ctrl-a
alt-r
perl -e 'print sort { length($a) <=> length($b) } <>'