Як можна сортувати текстовий файл за довжиною рядка в блокноті ++? Чи є якийсь плагін для згаданого завдання?
У випадку, якщо плагіна немає, який перший та, можливо, другий підручник для читання, для того, щоб написати плагін Я сам?
Як можна сортувати текстовий файл за довжиною рядка в блокноті ++? Чи є якийсь плагін для згаданого завдання?
У випадку, якщо плагіна немає, який перший та, можливо, другий підручник для читання, для того, щоб написати плагін Я сам?
Відповіді:
Ця відповідь натхненна відео YouTube . Оновлено для підтримки оригінального порядку сортування, якщо це важливо.
У блокноті ++ є вбудований інструмент TextFX, який сортує вибрані рядки за алфавітом. Цей інструмент може бути викрадений для сортування за довжиною рядків, розміщуючи пробіли зліва від кожного рядка та переконуючись, що всі лінії однакової довжини.
"Зоопарк" з'являється в алфавітному порядку перед "Їхнім будинком", оскільки простір трактується як персонаж і йде перед "я". __X
(зробивши вигляд, що підкреслення - це справді пробіли), аналогічно буде й раніше за алфавітом _XX
. Ідея у цій відповіді - додати пробіли та номери рядків, які __________092dog
будуть відсортовані вище _003alligator
.
Я буду використовувати наступні приклади:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Крок 1. Додайте номери рядків.
(Примітка, додана барлопом - примітка для читача щодо цього кроку, ми не будемо сортувати за цими номерами рядків, ми сортуємо за довжиною рядків. Але причиною додавання номерів рядків є те, що ми знайте природний порядок, так що коли, наприклад, дві + лінії мають однакову довжину, ми можемо сортувати ці лінії відповідно до цього природного порядку)
Припускаючи, що у вашому текстовому файлі є лише дані, розмістіть текстовий курсор (вертикальну лінію) на перше місце у файлі. Потім у Edit
меню виберіть Column Editor...
( Alt+ C). Виберіть "Число для вставки" і почніть з 1, збільшити на 1 і включити провідні нулі. Зауважте, що це збереже початкове впорядкування при сортуванні від найкоротшої до найдовшої. Спочатку переверніть всі рядки, якщо ви хочете сортувати найдовше до найкоротшого.
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
Крок 2. Прокладіть всі рядки з провідними пробілами.
Помістіть текстовий курсор (вертикальну лінію) в перше місце файлу. Потім у Edit
меню виберіть Column Editor...
( Alt+ C). Вставте достатньо пробілів, щоб найкоротший рядок даних був викреслений до довжини найдовшої лінії даних. Якщо ваш найкоротший рядок має 4 символи, а найдовший 44, то обов’язково вставляйте принаймні 40 пробілів.
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
Крок 3. Обріжте лінії рівномірної довжини.
Використовуйте наступні функції пошуку / заміни регулярних виразів ( Ctrl+ H), щоб відповідати правим символам, що дорівнює або перевищує довжину найдовшої лінії даних.
^.*(.{50})$
Замініть все на $1
. Це дозволить обрізати все, крім правильних 50 символів кожного рядка. Якщо ваші дані довші (або короткі), ніж 50, відрегулюйте параметр {50}
у регулярному вираженні.
(Примітка додана барлопом. Ідея тут - найкоротші рядки мають найбільше пробілів на початку )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
Крок 4. Сортуйте лінії.
Виберіть увесь текст ( Ctrl+ A). Перейдіть до меню TextFX Text FX > TextFX Tools > Sort lines case sensitive (at column)
. Тепер ваші дані мають бути в порядку, від найкоротшого до найдовшого. Якщо ви хочете, щоб вони були від найдовшого до найкоротшого, зніміть прапорець Text FX > TextFX Tools > + Sort ascending
перед сортуванням. Зверніть увагу, як зворотні номери рядків також.
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
Крок 5. Видаліть провідні пробіли.
Використовуйте інший пошук / заміна регулярних виразів ( Ctrl+ H), щоб відповідати провідним пробілам.
^ *\d{4}
Це простір між кареткою і зірочкою. Замініть все нічим. Це видалить усі провідні пробіли та вставлені номери рядків, якщо у вас були чотиризначні номери рядків. Замініть на {4}
правильну кількість цифр у номерах рядків.
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MACRO
Я записав вищезазначені дії за допомогою макро функції Notepad ++, і це не працює. Я не впевнений, який крок не вдається, але я не поставив діагноз, чому. Можливо, ви можете використовувати AutoHotKey для автоматизації цього, якщо ви робите це повторно.
^ *\d{5}
або будь-яку кількість цифр, що використовуються для номерів рядків.
Ні, я не думаю, що існує. Найближчим є плагін TextFx, але це символьний сортування, а не довжина рядка. Ваша найкраща ставка - кинути текст у електронну таблицю і сортувати його там (використовуючи окремий обчислений стовпець за допомогою LEN()
функції).
Ви можете використовувати SQL в N ++ у файлах CSV! Наприклад, якщо у вас є:
col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;
, Ви можете виконати команду select * from data order by length(col1) desc
для сортування за спаданням. "дані" означає поточний файл. "col1" - назва першого (і останнього) стовпця.
На жаль, напевно є помилка, яка не дозволяє відміняти роздільник після рядків у тексті однієї колонки.
Або якщо у вас є Linux та nedit:
ctrl-a
alt-r
perl -e 'print sort { length($a) <=> length($b) } <>'