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ę?
13
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:
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 wybierzColumn 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.Krok 2. Wypełnij wszystkie linie wiodącymi spacjami.
Umieść kursor tekstowy (linia pionowa) w pierwszej pozycji pliku. Następnie w
Edit
menu wybierzColumn 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.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.
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 )
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ń zaznaczenieText FX > TextFX Tools > + Sort ascending
opcji przed sortowaniem. Zwróć też uwagę na odwrócenie numerów linii.Krok 5. Usuń spacje wiodące.
Użyj innego wyrażenia regularnego Znajdź / Zamień ( Ctrl+ H), aby dopasować wiodące spacje.
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.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.
źródło
^ *\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).źródło
Możesz używać SQL w N ++ w plikach CSV! Na przykład, jeśli masz:
, 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.
źródło
Lub jeśli zdarzy ci się mieć Linuksa i Nedita:
źródło