133

I want to flip line orders of a document with 500+ lines. The lines aren't just numbers, some include text and other characters. It's a mix.

Example:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6

Which I then want to flip, reverse and look like this from bottom to top:

Line 6
Line 5
Line 4
Line 3
Line 2
Line 1
6
  • 1
    Meaning you want the numbers on the left margin to count down, or you want the actual content of your file to be reversed?
    – Maxpm
    Sep 2, 2011 at 12:30
  • 2
    @Maxpm Actual content of the file to be reversed.
    – Danpe
    Sep 2, 2011 at 12:40
  • possible duplicate of Reverse line order in Notepad++ Feb 28, 2014 at 15:49
  • Related (but not duplicate): How to reverse a text file on Windows Jul 14, 2019 at 12:35
  • The latest Notepad++ has a dedicated Menu Item for this: Edit/Line Operations/Reverse Line Order
    – Spoc
    Feb 3, 2022 at 15:57

7 Answers 7

118

Solution not requiring other software except normally-included TextFX plugin:

  1. Edit > Select All
  2. TextFX > TextFX Tools > Insert Line Numbers
  3. If TextFX > TextFX Tools > +Sort ascending is checked, uncheck it
  4. TextFX > TextFX Tools > Sort lines case sensitive (at column)
  5. TextFX > TextFX Tools > Delete Line Numbers or First Word
9
  • 8
    If TextFX is not found then go to: Plugins » Plugin Manager » Show Plugin Manager » Check "TextFX Characters", Click Install. See here: textfx.no-ip.com/textfx Jul 25, 2012 at 16:18
  • -what worked was "Sort lines case insensitive" in part 4) Apr 1, 2014 at 23:43
  • 2
    For those using Eclipse see this answer for doing this even more simply. (I know the original question asked for Notepad++ but thought this would be worth adding for those stumbling across this). Jun 25, 2015 at 15:38
  • 4
    TextFX is not a supported plugin in the 64 bit version.
    – Rhyous
    Feb 21, 2019 at 22:16
  • 1
    TextFX has been phased out - from TextFX's Future: "... bid farewell to an aging workhorse that has served the community well." Jul 14, 2019 at 11:57
68

Edit: Newer versions of Notepad++ (v8.0+) now directly support reversing line order. Simply go to:

Edit -> Line Operations -> Reverse Line Order

Note that it will reverse the order of selected lines, or reverse all lines in the file if nothing is selected.

Since the menu is quite full, here is a visual hint:

position of the command in the elaborate menu structure

For older versions of Notepad++, the previous strategy can still be used.


This can also be done in Notepad++ without the TextFX plugin. It follows the same strategy of that of the accepted answer, but using native functionality. It is done as follows:

  1. Edit > Select All
  2. Edit > Column Editor... > Select Number to Insert > Set Initial number to 1 > Set Increase by to 1 > Check Leading zeros > Click OK

enter image description here

  1. Edit > Line Operations > Sort Lines in Descending Order Edit: A recent update added extra sorting options, the option: Sort Lines Lexicographically Descending seems to do the job.

enter image description here

  1. Remove Line Numbers through either box selection (Alt+Left Click Drag or Alt+Shift Select) or Search/Replace

enter image description here

8
  • 2
    It works, but there are two things to take in mind: 1- It inserts an extra number for last (empty) row, so you have to delete it before sorting. 2- if your list starts with numbers you could mess the inserted numbers with your numbers, because it doesn't insert an space after inserted numbers, so you should be careful in this case. Sep 3, 2015 at 15:58
  • Can't reproduce step 3. The new version has changed the wording, and whatever option doesn't work for me
    – Ooker
    Dec 6, 2017 at 15:24
  • 1
    @TrevorYoung - You are complaining about an image that was added by another user. I just fixed the formatting of the answer and approved the edit. If you find the image unhelpful, then remove it, you are the author of the answer. The addition of the image is an acceptable edit (i.e. the answer is better with the image than without it)
    – Ramhound
    Dec 7, 2017 at 22:08
  • 1
    @Ramhound My apologies. Looking at the edit history, I thought that you had added the image, but that's not the case. I have no problem with the image being there, but was trying to give a suggestion to the person who added that it might be better if the given suggestion were done instead. Dec 8, 2017 at 17:10
  • 1
    This is weird but it works... Feb 21, 2018 at 1:22
9

Well, since we are giving code examples, if you are on Windows 7 or you have installed PowerShell on another version of Windows, then:

$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

Or for a non-coding answer, download gVim, open the file and type:

:g/^/m0
6
  • I am on Windows 7, Where do i paste that code? this is really intresting.
    – Danpe
    Sep 2, 2011 at 13:58
  • 4
    Open the start menu and just type Powershell. Double click "Windows Powershell". It will open a command prompt. Run it there. There is also and IDE (although they call it an ISE - Integrated Script Editor), but I do most of my work at the command prompt and I use GVim for script editing.
    – EBGreen
    Sep 2, 2011 at 14:04
  • How can this be integrated into Notepad++? (The title of the question is "Flip or reverse line order in Notepad++".) Jul 14, 2019 at 11:55
  • That is why it is a comment rather than an answer. It is an alternative way to accomplish what I thought the user wanted rather than an answer to the literal question.
    – EBGreen
    Aug 23, 2019 at 4:45
  • @PeterMortensen just like the OP's answer that uses C# and the other C++ solution. You can use the pork2sausage plugin to do this autoamtically: Running a cmd command from notepad++ and putting the output into a new buffer?
    – phuclv
    Mar 20, 2022 at 1:59
5

If you're comfortable compiling C++, this should do the trick. Basically, I put each line of the file in a vector, and output it to a new file by using a reverse iterator.

#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;
}

If the output file is missing line breaks between the lines, then change the outFile << *rIt; to be outFile << *rIt << "\r\n"; so a line break is added (omit the \r if you're on Unix/Linux).

Disclaimer: I have not tested this code (I wrote it real quick in Notepad), but it looks viable.

4
  • Thanks man :) but i allready used my code, but that can be very helpfull for others. Btw maybe i'll wrote a Notepad++ plugin for that. which langauge they use in notepad++ plugins ?
    – Danpe
    Sep 2, 2011 at 13:17
  • @Danpe most Notepad++ plugins are written in C++, but technically can be extended to any other language capable of compiling a .DLL (and with the proper API bindings). Sep 2, 2011 at 13:44
  • So I think you just created a plugin :)
    – Danpe
    Sep 2, 2011 at 13:59
  • 1
    How can this be integrated into Notepad++? (The title of the question is "Flip or reverse line order in Notepad++".) Jul 14, 2019 at 11:46
1

Here is a non-coding way:

  1. Download/Install TextPad free trial
  2. Open a spreadsheet program (ie Excel) and create numbers 1000 through 1500 in column "A" by putting a "1000" in cell A1, then putting A1+1 in cell A2, then copy that down to A500.
  3. Open your text file in TextPad
  4. Change to "block mode" in TextPad
  5. Paste column A from the spreadsheet into TextPad (all will end up on the left margin due to block mode)
  6. Use TextPad sort feature, descending
  7. Use TextPad block mode delete to get rid of the numbers
4
  • 3
    well if you are going to use excel anyway, just copy the file contents from any editor, paste to excel. Fill series the next column over with a series of numbers. Select both columns and sort descending on the number column. Copy the text column and paste back to the editor.
    – EBGreen
    Sep 2, 2011 at 15:15
  • @EBGreen, you are correct. I'm an idiot. You just need to be careful because Excel will change your data (messes with numbers, dates and such).
    – Dale
    Sep 5, 2011 at 12:27
  • How can this be integrated into Notepad++? (The title of the question is "Flip or reverse line order in Notepad++".) Jul 14, 2019 at 11:55
  • @PeterMortensen, The original question said "If it's not available in Notepad++ then other software whould be good also :)"
    – Dale
    Jul 22, 2019 at 15:19
1

Here is C# .NET code for it I just wrote :)

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);
        }
    }
}
5
  • Why do you need the unsafe keyword on Main here? Sep 6, 2011 at 19:05
  • @Break I dont know how it got there :O lol fixed.
    – Danpe
    Sep 7, 2011 at 15:31
  • 1
    How can we integrate this into notepad++ ? Feb 13, 2017 at 18:41
  • How can this be integrated into Notepad++? (The title of the question is "Flip or reverse line order in Notepad++".) Jul 14, 2019 at 11:55
  • You people are on some copium or something. It's superuser, not stackoverflow. A person asked about how to do it notepad++. What are all these funny-formatted symbols? Do I paste this in notepad?
    – KulaGGin
    Oct 20, 2022 at 9:13
0

If you wish to automate this on Notepad++ with a single click:

  1. Get this Python script plugin
  2. add the code below and save it as .py file in the Python script folder (to know the location of this folder, click plugins tab, then Python Script and new scripts).

All the glory to Reck Dickhard!

To add it in the context menu:

If you click on the plugins tab → Python ScriptConfiguration, you can assign the script either to a toolbar icon, or to the Python Script menu itself. (If you assign a script to the menu, then it will appear immediately, but you will not be able to assign a shortcut to it until next time Notepad++ starts. If you assign it to a toolbar icon, then it will only appear on the next start of Notepad++.)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .