Порядок перевернення чи зворотного рядка в Блокноті ++


95

Я хочу перегорнути рядки замовлень документа на 500+ рядків. Рядки - це не просто цифри, деякі містять текст та інші символи. Це мікс.

Приклад:

Рядок 1
Рядок 2
Рядок 3
Рядок 4
Рядок 5
Рядок 6

Який потім хочу перевернути, повернути назад і виглядати так знизу вгору:

Рядок 6
Рядок 5
Рядок 4
Рядок 3
Рядок 2
Рядок 1

Значить, ви хочете, щоб цифри на лівій полі відраховувались, або ви хочете, щоб фактичний вміст вашого файлу був змінений?
Maxpm

2
@Maxpm Фактичний вміст файлу, який потрібно змінити.
Данпе


Пов’язані (але не дублікати): Як повернути текстовий файл у Windows
Peter Mortensen

Відповіді:


102

Рішення, яке не потребує іншого програмного забезпечення, крім нормально включеного модуля TextFX:

  1. Редагувати> Вибрати все
  2. TextFX> TextFX Tools> Вставити номери рядків
  3. Якщо встановлено прапорець TextFX> TextFX Tools> + Сортувати за зростанням, зніміть його
  4. TextFX> TextFX Tools> Сортувати рядки з урахуванням регістру (у стовпці)
  5. TextFX> TextFX Tools> Видалити номери рядків або перше слово

6
Якщо TextFX не знайдено, перейдіть до: Плагіни »Менеджер плагінів» Показати Менеджер плагінів »Поставте прапорець« Символи TextFX »та натисніть« Встановити ». Дивіться тут: textfx.no-ip.com/textfx
Kalpesh Panchal

-що працювало було "Сортування рядків без
чутливості

@ Theta30: Здогадайтесь, текст інтерфейсу змінився з моменту використовуваної версії.
Gnubie

2
Ті, хто використовує Eclipse, бачать цю відповідь, щоб зробити це ще простіше. (Я знаю, що оригінальне запитання було задано для "Блокнот ++", але я вважав, що це варто додати для тих, хто натрапляє на це).
Стів Чемберс

2
TextFX не підтримується плагіном у 64-бітній версії.
Rhyous

34

Це також можна зробити в Notepad ++ без плагіна TextFX. Він дотримується тієї ж стратегії, що і у прийнятої відповіді, але з використанням нативного функціоналу. Робиться так:

  1. Редагувати> Вибрати все
  2. Редагувати> Редактор стовпців ...> Виберіть номер для вставки> Встановіть початковий номер на 1> Встановіть збільшення на 1> Перевірити провідні нулі> Клацніть ОК

введіть тут опис зображення

  1. Редагувати> Операції ліній> Сортувати рядки у порядку зменшення порядку Редагувати: Недавнє оновлення додало додаткові параметри сортування, опція: Сортувати лінії за лексикографічним убуванням, здається, виконує цю роботу.

введіть тут опис зображення

  1. Видаліть номери ліній за допомогою вибору поля (Alt + Перетягнути лівою кнопкою миші або Alt + Shift Select) або Пошук / Заміна

введіть тут опис зображення


1
Це працює, але слід пам’ятати про дві речі: 1- Він вставляє додаткове число для останнього (порожнього) рядка, тому його потрібно видалити перед сортуванням. 2 - якщо ваш список починається з цифр, ви можете зіпсувати вставлені номери зі своїми номерами, оскільки він не вставляє пробіл після вставлених чисел, тому вам слід бути обережними в цьому випадку.
Франциско Альварадо

Крок 3. Неможливо відтворити крок 3. Нова версія змінила формулювання , і будь-який варіант не працює для мене
Ooker

1
@TrevorYoung - Ви скаржитеся на зображення, яке додав інший користувач . Я просто зафіксував форматування відповіді і схвалив редагування. Якщо ви вважаєте, що зображення є непосильним, то видаліть його, ви є автором відповіді. Додавання зображення є прийнятним редагуванням (тобто відповідь краще із зображенням, ніж без неї)
Ramhound

1
@Ramhound Мої вибачення. Переглядаючи історію редагування, я подумав, що ви додали зображення, але це не так. У мене немає проблем із тим, що зображення є, але я намагався дати пропозицію людині, яка додала, що, можливо, буде краще, якби дана пропозиція була зроблена замість цього.
Тревор Янг

1
Це дивно, але це працює ...
kayleeFrye_onDeck

6

Ну, оскільки ми наводимо приклади коду. Якщо ви працюєте в Windows 7 або встановили PowerShell в іншій версії Windows, то:

$foo = New-Object System.collections.arraylist;
$foo.AddRange($(Get-Content 'C:\Path\To\File.txt));
$foo.Reverse();
$foo | Out-File C:\Path\To\File.txt

Або для відповіді, що не кодує, завантажте gVim , відкрийте файл та введіть:

:g/^/m0

Я в Windows 7, куди вставити цей код? це справді цікаво.
Данпе

2
Відкрийте меню "Пуск" і просто введіть Powershell. Двічі клацніть на "Powershell Windows". Це відкриє командний рядок. Запустіть його там. Існує також і IDE (хоча вони називають це ISE - інтегрований редактор сценаріїв), але я більшу частину своєї роботи я виконую в командному рядку і використовую GVim для редагування скриптів.
EBGreen

Як це можна інтегрувати в Notepad ++? (Заголовок запитання - "Порядок зворотного чи зворотного рядка в Блокноті ++" .)
Peter Mortensen

Ось чому це коментар, а не відповідь. Це альтернативний спосіб досягти того, що я вважав, що бажає користувач, а не відповідь на буквальне запитання.
EBGreen

5

Якщо вам зручно компілювати C ++, це повинно зробити трюк. В основному я розміщую кожен рядок файлу у векторному і вивожу його в новий файл, використовуючи зворотний ітератор.

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> fileLines;
    std::string              currLine;
    std::ifstream            inFile("input.txt");
    if (inFile.is_open())
    {
        while (inFile.good())
        {
            std::getline(inFile, currLine);
            fileLines.push_back(currLine);
        }
        inFile.close();
    }
    else
    {
        std::cout << "Error - could not open input file!\n";
        return 1;
    }

    std::ofstream outFile("output.txt");
    if (outFile.is_open())
    {
        std::vector<std::string>::reverse_iterator rIt;
        for (rIt = fileLines.rbegin(); rIt < fileLines.rend(); rIt++)
        {
            outFile << *rIt;
        }
        outFile.close();
    }
    else
    {
        std::cout << "Error - could not open output file!\n";
        return 1;
    }
    return 0;
}

Якщо вихідний файл відсутні розриви рядків між рядками, а потім змінити , outFile << *rIt;щоб бути outFile << *rIt << "\r\n";так додаються розрив рядка (опустити , \rякщо ви на Unix / Linux).

Відмова: Я не перевіряв цей код (я написав його дуже швидко в Блокноті), але він виглядає життєздатним.


Дякую, людина :), але я вже використовував свій код, але це може бути дуже корисним для інших. До речі, можливо, я напишу для цього плагін Notepad ++. який мовний текст вони використовують у блокноті ++ плагінах?
Данпе

@Danpe більшість плагінів Notepad ++ написані на C ++, але технічно їх можна поширити на будь-яку іншу мову, здатну компілювати .DLL (і з належними прив’язками API).
Прорив

Тому я думаю, що ви просто створили плагін :)
Danpe

Як це можна інтегрувати в Notepad ++? (Заголовок питання - "Порядок перевернення чи зворотного рядка в Блокноті ++" .)
Peter Mortensen


2

Ви можете це зробити в Інтернеті на веб-сайті http://textmechanic.co/Sort-Text-Lines.html


1
Хоча веб-сайт зламаний, схоже, він перемістився до textmechanic.co/Sort-Text-Lines.html
Джордж Chalhoub

1
@georgechalhoub Спасибі, я оновив відповідь.
Франк Дернонкурт

Як це можна інтегрувати в Notepad ++? (Заголовок запитання - "Порядок зворотного чи зворотного рядка в Блокноті ++" .)
Peter Mortensen

1

Ось код C # .NET для цього я щойно написав :)

class Program
{
    static void Main(string[] args)
    {
        try
        {
            String line;
            Stack<String> lines = new Stack<string>();
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("test.txt"))
            {
                // Read and display lines from the file until the end of
                // the file is reached.
                while ((line = sr.ReadLine()) != null)
                    lines.Push(line);
            }

            // Create a writer and open the file
            TextWriter tw = new StreamWriter("test2.txt");
            // Write a line of text to the file
            while (lines.Count > 0)
                tw.WriteLine(lines.Pop());
            // close the stream
            tw.Close();
        }
        catch (Exception e)
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read/written:");
            Console.WriteLine(e.Message);
        }
    }
}

Для чого тут потрібне unsafeключове слово Main?
Прорив

@ Снідаю, я не знаю, як це потрапило: O lol fix.
Данпе

1
Як ми можемо інтегрувати це в блокнот ++?
Теоман шипахі

Як це можна інтегрувати в Notepad ++? (Заголовок запитання - "Порядок зворотного чи зворотного рядка в Блокноті ++" .)
Peter Mortensen

0

Ось такий спосіб кодування:

  1. Завантажте та встановіть безкоштовну пробну версію TextPad
  2. Відкрийте програму електронних таблиць (тобто Excel) і створіть числа від 1000 до 1500 у стовпці "А", поставивши "1000" у комірку А1, потім поклавши А1 + 1 у комірку А2, а потім скопіюйте її до А500.
  3. Відкрийте текстовий файл у TextPad
  4. Перейдіть на "режим блокування" в TextPad
  5. Вставте стовпець A з електронної таблиці в TextPad (усе закінчиться зліва на полі через режим блокування)
  6. Використовуйте функцію сортування TextPad за убуванням
  7. Використовуйте режим видалення блоку TextPad для видалення цифр

2
добре, якщо ви все одно будете використовувати excel, просто скопіюйте вміст файлу з будь-якого редактора, вставте його до excel. Заповніть ряд наступним стовпцем рядом цифр. Виберіть обидва стовпчики та сортуйте у порядку зменшення стовпця з цифрами Скопіюйте текстовий стовпець і вставте назад у редактор.
EBGreen

@EBGreen, ти маєш рацію. Я ідіот. Вам просто потрібно бути обережними, тому що Excel змінить ваші дані (повідомлення з номерами, датами тощо).
Дейл

Як це можна інтегрувати в Notepad ++? (Заголовок запитання - "Порядок зворотного чи зворотного рядка в Блокноті ++" .)
Peter Mortensen

@PeterMortensen, в оригінальному запитанні було сказано: "Якщо це не доступно в" Блокноті ++ ", то інше програмне забезпечення також буде добре :)"
Дейл,

0

Якщо ви хочете автоматизувати це в Notepad ++ одним натисканням кнопки:

  1. Отримайте цей плагін для сценарію Python
  2. додайте код нижче та збережіть його як .py файл у папці сценарію Python (щоб знати місце розташування цієї папки, натисніть вкладку плагінів, потім Python Script та нові сценарії).

Вся слава Реку Дікхарду !

Щоб додати його в контекстне меню:

Якщо ви натиснете на вкладку плагінів → Сценарій PythonКонфігурація , ви можете призначити скрипт або піктограмою панелі інструментів, або самим меню сценарію Python. (Якщо ви призначите скрипт у меню, він з’явиться негайно, але ви не зможете призначити його ярликом до наступного запуску Notepad ++. Якщо ви призначите його піктограмі панелі інструментів, він з’явиться лише на наступний запуск Notepad ++.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.