Notepad сортировать по длине строки
Текущая версия Notepad ++ (на момент написания этой статьи) - 6.6.3. Версия 6.5.2 является первой, которая ввела собственную (без плагина) функцию сортировки. По крайней мере, это то, что они утверждают; несмотря на то, что у нас девять версий после версии 6.5.2, я ничего не нашел об этой функции:
- Там нет никаких признаков этого в меню (или я слепой),
- В документации Notepad ++ нет ни слова (онлайн-справка).
Все, что я читаю в Интернете (включая этот ответ ), все еще говорит о сортировке строк с помощью плагина TextFX. Там нет ничего о нативной (на основе QuickSort) функции.
Итак: Как сортировать строки в Notepad ++ без использования плагина TextFX?
Правильная опция меню выглядит следующим образом.
Для всех версий до 6.8.3 :
Меню Редактировать → Операции со строками → Сортировать линии в порядке возрастания / убывания
Для версии 6.8.3 и следующих:
Меню Правка → Операции со строками → Сортировка строк по лексикографическому возрастанию / убыванию
Выберите несколько строк, и ваш выбор будет отсортирован. Если выбора нет, весь ваш файл будет отсортирован.
По какой-то странной причине это не сработало для меня. Я на Windows, но мой текст имел только LF окончания строки (текст, вставленный из браузера). Чтобы обойти это, мне пришлось преобразовать все окончания строк в Unix, затем обратно в Windows, затем сортировка работала.
@trejder Тот факт, что мне пришлось конвертировать в одну сторону, а затем обратно, говорит мне, что настоящая проблема заключается в реализации Notepad ++ того, с каким документом он работает. Возможно, вставленный текст, который еще не был сохранен, является крайним случаем. Но это определенно ошибка, да.
Функция сортировки работает неправильно, она сортируется следующим образом: addCartLink bindPager setItemsTitle addTab
Мы можем воспользоваться тем, что спец символы ставятся выше при сортировке, чем другие символы.
Можно попробовать решить эту задачу с помощью плагина TextFX . Для начала его нужно установить из менеджера плагинов: Plugins -> Plugins Admin.
Шаг первый Добавляем порядковый номер в начале, чтобы сохранить оригинальный порядок строк, если будут строки одинаковой длинны.
Ставим курсор в самое начало и жмём Edit -> Column Editor. (Комбинация клавиш Alt + C ) Указываем Start = 1 Increase by = 1 и обязательно указываем Include Leading Zeros
Шаг второй Делаем отступ в виде спец символов
Нужно добавить спец символы в начало строки. Их количество должно быть равно разнице между самой длинной и самой короткой строкой. Если есть строка 3 символа и строка 59 сиволов, то нужно добавить 56 спец символов. Жмём Edit -> Column Editor. (Комбинация клавиш Alt + C )
Шаг третий Обрезаем строки до одинаковой длинны
Пользуемся регулярным выражением:
для того, чтобы обрезать строки до одинаковой длинны. Выделяем самую короткую строку и запоминаем её длинну. Переходим в Find/Replace (Комбинация клавиш Ctrl + H ) и в Find what: указываем
Где вместо 26 - длинна вашей строки. В Replace with. указываем $1 .
Шаг четвёртый Сортируем строки
Выделяем весь текст (Комбинация клавиш Ctrl + A ) Идём в TextFx -> TextFx Tools -> Sort lines case sensitive (at column) Если хотите отсортировать от самой длинной к самой короткой отметьте Text FX -> TextFX Tools -> + Sort ascendin
Шаг пятый Удаляем ненужные спец символы
Используем ещё одно регулярное выражение:
Переходим в Find/Replace (Комбинация клавиш Ctrl + H ) и в Find what: вставляем следующее
где вместо числа два нужно указать количество цифр в номере строки (в моём примере у меня двухзначная нумерация строк, значит я указываю 2).
Notepad++ Как выровнять текст по столбцам
Можно ли в NotePad++ выровнять текст "по столбцам"? К примеру: из ( 1 5.0 12.83 ) ( 1.88 3.21 12.1 ) ( 2.2 4.0 12.0 ) . сделать: ( 1 5.0 12.83 ) ( 1.88 3.21 12.1 ) ( 2.2 .
Лишние переносы строк в Инструменты разработчика, при копировании CSS из Chrome в Notepad++
Название поста изменилось само. Я писал о проблеме Инструменты разработчика при копировании из него появляются переносы. Проблема появилась недавно, не знаю с чем это связано, скорее всего обновления.
Как отсортировать строки по длине слова регулярным выражением Notepad++
ДО: aaa aaaa aaaaaa a aa aaaa aa a Нужно: а аа ааа аааа ааааа аааааа Каким образом можно отсортировать по количеству букв
Регулярное выражение для Notepad++
Есть много строк и нужно в каждой строке найти первый символ цифру 6, если нашел заменить на другой символ. Помогите Пример: 123456 998316 000000 678913 (Вот тут первый символ цифра 6 - его и заменяем .
макрос для замены текста с использованием буфера
подскажите, это вообще возможно записать макрос, где в целом одна замена, но чтобы замена была не на что-то конкретное, а на текст только что скопированный в буфер? пример: Wilco - Far Far Away (Dark .
Как последнюю латинскую букву в слове сделать заглавной
Как регулярным выражением сменить регистр последней латинской буквы в слове? Пример текста: cloud Желаемый результат: clouD
Настройка текстового редактора для компиляции кода
Решил удариться в хардкод использовав обычный текстовый редактор notepad++, но возникла загвоздка в его настройке. Кто может описать шаги для настройки блокнота ? Возьмем по классике, первую .
Перестановка найденных значений с помощью регулярного выражения в Notepad++
Возможно ли это сделать с помощью регулярного выражения в Notepad++? Например, есть текст (B5+B6)C4A5 B1B5 C1A7 A7C1B1 C1B1A1 C1testB1+A7 C1/23*%^53B1+A2 Необходимо найденные .
Как преобразовать сжатый блок html-кода в структурированный вид?
Есть сжатый блок html-кода. Как его преобразовать в структурированный вид в Sublimtext 3 или Notepad++?
Как остановить программу до тех пор, пока я не закрою Notepad с текстом?
После создания формы в PyQt открываю файл с помощью file=os.startfile('file name') или webbrowser.open('file name'). Поскольку программа продолжает работать, файл открывается позади формы, что .
Как перевести файл CMS на русский
Как перевести много строк в файле? Вот пример строк : "login" => "Login", "login_here" => "Login Here", "login_email" => "Email", .
Есть сервис (или плагин) для удобного форматирования html
Есть код HTML. Он очень плохо выглядит. То табуляция есть, то её нет. То CSS код отформатирован хорошо, либо он в одной длинной строке (здесь даже код CSS в самом файле). С JS вроде получше, но всё-же .
Не работает темная тема в notepad++
раньше пользовался windows, там часто работал в notepad++, а когда перешел на ubuntu, столкнулся с проблемой что темная тема частично не работает, перепробывал все темы, и никакая из них не убирает .
Почему возникает ошибка в NotePad++ Upload of C:\путь failed?
В NotePad++ при сохранении измененного файла возникает ошибка: Upload of C:\путь failed (файл открыт с FTP подключения). Проблема интересна именно тем, что возникает только в случае, когда распаковал .
Как я могу отсортировать текстовый файл по длине строки в блокноте ++? Есть ли плагин для указанной задачи?
Если плагин отсутствует, какой первый и, возможно, второй учебник прочитать, чтобы написать плагин сам?
Являются ли данные чувствительными? Или вы могли бы поделиться им на Dropbox / Google-Drive / и т.д.? Если Notepad ++ сможет открывать и обрабатывать этот файл, я представляю, что мое решение будет работать, но я бы с удовольствием попробовал его сам.
Этот ответ вдохновлен видео на YouTube . Обновлен, чтобы поддерживать оригинальный порядок сортировки, если это важно.
Notepad ++ имеет встроенный инструмент TextFX, который сортирует выделенные строки по алфавиту. Этот инструмент можно перехватить для сортировки по длине линий, поместив пробелы слева от каждой строки и убедившись, что все строки имеют одинаковую длину.
«Зоопарк» идет в алфавитном порядке перед «Их домом», потому что пространство рассматривается как символ и идет перед «я». __X (притворяясь, что подчеркивания на самом деле пробелы), аналогично, придет в алфавитном порядке раньше _XX . Идея в этом ответе заключается в добавлении пробелов и номеров строк, которые __________092dog будут отсортированы выше _003alligator .
Я буду использовать следующие данные в качестве примера:
Шаг 1. Добавьте номера строк.
(Примечание, добавленное barlop - примечание для читателя об этом шаге, мы не будем сортировать по этим номерам строк, мы сортируем по длине строк. Но причина добавления номеров строк заключается в том, что мы знать естественный порядок, так что, когда, например, две + строки имеют одинаковую длину, мы можем отсортировать эти строки в соответствии с этим естественным порядком)
Предполагая, что ваш текстовый файл содержит только данные, поместите текстовый курсор (вертикальная линия) в самую первую позицию файла. Затем в Edit меню выберите Column Editor. ( Alt + C ). Выберите «Число для вставки» и начните с 1, увеличьте на 1 и включите начальные нули. Обратите внимание, что это сохранит исходный порядок при сортировке от самой короткой строки к самой длинной. Сначала переверните все строки, если хотите отсортировать по длине.
Шаг 2. Заполните все строки пробелами.
Поместите текстовый курсор (вертикальная линия) в самую первую позицию файла. Затем в Edit меню выберите Column Editor. ( Alt + C ). Вставьте достаточно пробелов, чтобы самая короткая строка данных была заполнена до длины самой длинной строки данных. Если ваша самая короткая строка содержит 4 символа, а самая длинная - 44, убедитесь, что вы вставили как минимум 40 пробелов.
Шаг 3. Обрежьте линии до одинаковой длины.
Используйте следующее Регулярное выражение Найти / Заменить ( Ctrl + H ), чтобы соответствовать правым символам, равным или превышающим длину самой длинной строки данных.
Заменить все на $1 . Это обрезает все, кроме самых правых 50 символов каждой строки. Если ваши данные длиннее (или короче), чем 50, настройте их в регулярном выражении.
(Примечание добавлено barlop - идея здесь в том, что самые короткие строки имеют наибольшее количество пробелов в начале )
Шаг 4. Сортировка строк.
Выделите весь текст ( Ctrl + A ). Через меню TextFX перейдите к Text FX > TextFX Tools > Sort lines case sensitive (at column) . Ваши данные должны быть в порядке длины, от самого короткого до самого длинного. Если вы хотите, чтобы они находились в порядке от самого длинного до самого короткого, снимите флажок Text FX > TextFX Tools > + Sort ascending перед сортировкой. Обратите внимание, что номера строк также меняются местами.
Шаг 5. Удалить ведущие пробелы.
Используйте другое Регулярное выражение Найти / Заменить ( Ctrl + H ), чтобы найти начальные пробелы.
Это пространство между кареткой и звездочкой. Заменить все ничем. Это удалит все начальные пробелы и вставленные номера строк, если у вас были 4-значные номера строк. Замените на правильное количество цифр в номерах строк.
MACRO
Я записал вышеупомянутые шаги, используя функцию макроса Notepad ++, и она не работает. Я не уверен, какой шаг терпит неудачу, но я не диагностировал почему. Возможно, вы могли бы использовать AutoHotKey для автоматизации этого, если вы делаете это неоднократно.
Предупреждение: это не стабильный вид. Другими словами, строки одинаковой длины не обязательно будут появляться в том же порядке после сортировки - вместо этого они будут отсортированы лексикографически.
@Bob является правильным, если у вас есть строки заданной длины, например, 33 символа, которые имеют определенный порядок, которые не будут отражены в результатах. Мы можем добавить номера строк с помощью Alt + C до шага 1 (включая начальные 0, чтобы обеспечить одинаковую длину). Затем при очистке на шаге 4 используйте ^ *\d <5>или любое другое количество цифр для номеров строк.5>
Надо сказать, прочитав твой ответ, я понял это только когда попробовал. Я думаю, что причина, почему у вас нет больше голосов, может быть в том, что люди не поняли логику. Вы позволите мне добавить объяснение логики к вашему ответу в начале?
Нет, я не думаю, что есть. Самый близкий плагин TextFx, но это сортировка на основе символов, а не на основе длины строки. Лучше всего поместить текст в электронную таблицу и отсортировать его там (используя отдельный вычисляемый столбец с использованием LEN() функции).
Спасибо, текстовый файл имеет длинные строки и огромный общий размер, поэтому я убрал редакторы электронных таблиц. Позвольте мне обновить вопрос.
@HPM хорошо, если вы хотите посмотреть за пределы блокнота ++, тогда командная строка сделает это. Например, используйте некоторые команды, чтобы получить длину строки в конце каждой строки. тогда ты, по крайней мере, был бы ближе к этому.
спасибо, это хороший совет Что меня интересует, так это множество плагинов NP ++, почему этого не существует?
Вы можете использовать SQL в N ++ в файлах CSV! Например, если у вас есть:
col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;
Вы можете выполнить команду select * from data order by length(col1) desc сортировки по убыванию. «данные» означает текущий файл. «col1» - имя первого (и последнего) столбца.
К сожалению, возможно, есть ошибка, которая не позволяет отказаться от разделителя после строк в тексте из одного столбца.
Это действительно отличное решение, если бы только SQL в N ++ не искажал вывод данных. Я только что проверил ваше решение и добавил в конце всех строк разделители с быстрой заменой регулярных выражений, но вывод данных преобразует все в строчные буквы и заменил мои черточки на вопросительные знаки.
@Dane (в настоящее время у меня нет доступа к Notepad ++.) Возможно, попробуйте добавить одну кавычку в начало и конец каждой строки (а затем точку с запятой после этого)? Может быть, двойные кавычки?
У меня есть списки файлов, которые содержат несколько столбцов данных. Это не отсортировано так, как я хочу из вывода, поэтому я вручную ищу, где должна быть строка. Есть ли способ в Notepad ++ сортировать строки по алфавиту? Если так, то как?
Пожалуйста, смотрите новый ответ @Franck Dernoncourt. Люди могут использовать ответ, помеченный как принятый, не читая об обновлении.
Начиная с Notepad ++ 6.5.2 теперь можно изначально сортировать строки:
Это глючит . Я должен был скопировать свой текст и вставить в другую вкладку, чтобы иметь возможность сортировать .
Я видел некоторую проблему с сортировками, я думаю , что это может быть связано с несовместимыми окончаниями строк. Одним из решений, которое помогло мне решить проблему «без сортировки», было: выделение всего текста , преобразование всех концов строк в Linux / Mac / Windows (в зависимости от того, какая ОС НЕ является вашей операционной системой), а затем преобразование всех концов строк в окончание вашей операционной системы. , Теперь у меня все заработало.
(Обратите внимание, что этот ответ был написан до выпуска np ++ 6.5.2.)
Кажется, что Notepad ++ не поддерживает сортировку по умолчанию, но у Notepad ++ есть много друзей, которые могут сделать что-то подобное для вас, что мы называем плагинами.
- Загрузите плагин TextFX для Notepad ++ ( TextFX в SourceForge ) - перейдите на последнюю версию и загрузите последнюю версию TextFX… bin.zip.
- Откройте zip-архив и распакуйте файл NppTextFX.dll в папку (Program Files) \ Notepad ++ \ plugins.
- Перезапустите Блокнот ++
- Чтобы выполнить сортировку, выберите строки для сортировки, перейдите в TextFX в главном меню и выберите TextFX Tools - Sort lines.
Нет необходимости вручную захватывать TextFX -> Первое: обновление до последней версии NPP. Затем выберите «Плагины» / «Менеджер плагинов». Затем он должен заполнить список плагинов. Выберите TextFX. «Установить». Готово.
Кроме того, родная сортировка улучшилась за эти годы. (Выберите «Редактировать» / «Операции со строками») Посмотрите другие ответы, если вы не хотите беспокоиться о плагине / TextFX, хотя я рекомендую его по другим причинам ..
Поскольку вы используете Notepad ++, я предполагаю, что вы используете Windows. У вас есть несколько других вариантов сортировки содержимого большого текстового файла по алфавиту.
Мой личный фаворит - PowerShell. Вы можете использовать командлет Sort-Object . Следующая команда показывает пример использования командлета. Сначала мы читаем содержимое (Get-Content) файла MyFile.txt, передаем его в командлет Sort-Object (Sort) и выводим результат в новый файл (Out-File).
Другой вариант - использовать команду сортировки в командной строке.
Читайте также: