Как я могу отсортировать текстовый файл по длине строки в блокноте ++? Есть ли плагин для указанной задачи?
Если плагин отсутствует, какой первый и, возможно, второй учебник прочитать, чтобы написать плагин сам?
Как я могу отсортировать текстовый файл по длине строки в блокноте ++? Есть ли плагин для указанной задачи?
Если плагин отсутствует, какой первый и, возможно, второй учебник прочитать, чтобы написать плагин сам?
Ответы:
Этот ответ вдохновлен видео на YouTube . Обновлен, чтобы поддерживать оригинальный порядок сортировки, если это важно.
Notepad ++ имеет встроенный инструмент TextFX, который сортирует выделенные строки по алфавиту. Этот инструмент можно перехватить для сортировки по длине линий, поместив пробелы слева от каждой строки и убедившись, что все строки имеют одинаковую длину.
«Зоопарк» идет в алфавитном порядке перед «Их домом», потому что пространство рассматривается как символ и идет перед «я». __X
(притворяясь, что подчеркивания на самом деле пробелы), аналогично, придет в алфавитном порядке раньше _XX
. Идея в этом ответе заключается в добавлении пробелов и номеров строк, которые __________092dog
будут отсортированы выше _003alligator
.
Я буду использовать следующие данные в качестве примера:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Шаг 1. Добавьте номера строк.
(Примечание, добавленное barlop - примечание для читателя об этом шаге, мы не будем сортировать по этим номерам строк, мы сортируем по длине строк. Но причина добавления номеров строк заключается в том, что мы знать естественный порядок, так что, когда, например, две + строки имеют одинаковую длину, мы можем отсортировать эти строки в соответствии с этим естественным порядком)
Предполагая, что ваш текстовый файл содержит только данные, поместите текстовый курсор (вертикальная линия) в самую первую позицию файла. Затем в 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}
в регулярном выражении.
(Примечание добавлено barlop - идея здесь в том, что самые короткие строки имеют наибольшее количество пробелов в начале )
_______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-значные номера строк. Замените на {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) } <>'