У меня есть текстовый файл, который содержит имена файлов с их расширением.

apple.c
orange.hpp
plum.h
mango.c
banana.cpp
grapes.hpp

Я хочу, чтобы приведенный выше текст сортировался в алфавитном порядке, но сгруппировался по их расширениям: т.е.

apple.c
mango.c
banana.cpp
plum.h
grapes.hpp
orange.hpp

Как я могу сделать это в Notepad++?

Я попробовал плагин TextFX, плагин Linesort и редактор колонок. Плагин Linesort имеет возможность сортировать строки справа, но вывод по-прежнему не верен.

2 ответа2

2

Есть плагин «SQL». Для правильного использования требуется заголовок. Я добавил заголовок, чтобы текст теперь выглядел следующим образом

COLUMN1.COLUMN2
apple.c
orange.hpp
plum.h
mango.c
banana.cpp
grapes.hpp

Выберите N++ Меню -> Плагины -> SQL -> Пуск

Оператор SQL: ВЫБЕРИТЕ COLUMN1 c1, COLUMN2 c2 ОТ ДАННЫХ ПО СЛОВАМ c2, c1
Разделитель:.

Нажмите на кнопку «выполнить SQL».

Новый файл будет создан с этим содержанием:

SQL Plugin 1.0.1025
Query         : select column1 c1,column2 c2 from data order by c2,c1
Sourcefile    : new 6
Delimiter     : .
Number of hits: 6
===================================================================================
Query result:
apple.c
mango.c
banana.cpp
plum.h
grapes.hpp
orange.hpp
0

Помимо нестандартных плагинов, есть также способ использовать стандартный плагин TextFX, который многие пользователи считают поставляемым со своим N++. Это не удивительно элегантно, но работает:

apple.c
orange.hpp
plum.h
mango.c
banana.cpp
grapes.hpp
  1. Используйте поиск / замену для добавления расширений перед именами файлов
    • Найти что: ^(.*\.(.*))$
    • Заменить на: \2\t\1
    • Режим поиска: регулярное выражение
    • ". соответствует символу новой строки": не отмечен
c   apple.c
hpp orange.hpp
h   plum.h
c   mango.c
cpp banana.cpp
hpp grapes.hpp
  1. TextFX > Инструменты TextFX > Сортировка строк с учетом регистра (или без учета регистра)
c   apple.c
c   mango.c
cpp banana.cpp
h   plum.h
hpp grapes.hpp
hpp orange.hpp
  1. Используйте find/replace для удаления временного столбца
    • Найти что: ^.*\t(.*)$
    • Заменить на: \1
    • Режим поиска: регулярное выражение
    • ". соответствует символу новой строки": не отмечен
apple.c
mango.c
banana.cpp
plum.h
grapes.hpp
orange.hpp

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .