我想翻转具有500多行的文档的行顺序。这些行不仅是数字,有些还包括文本和其他字符。

示例:

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


然后我想翻转,反转并从下到上看起来像这样: />
Line 6
Line 5
Line 4
Line 3
Line 2
Line 1


评论

意味着要让左边距上的数字递减计数,还是要反转文件的实际内容?

@Maxpm要反转的文件的实际内容。

记事本++中反向行顺序的可能重复项

相关(但不重复):如何在Windows上反转文本文件

#1 楼

除了通常包括的TextFX插件外,不需要其他软件的解决方案:


编辑>全选
TextFX> TextFX工具>插入行号
如果TextFX> TextFX Tools> +升序已选中,请取消选中
TextFX> TextFX Tools>区分行区分大小写(在列中)
TextFX> TextFX Tools>删除行号或第一个单词


评论


如果找不到TextFX,则转到:插件»插件管理器»显示插件管理器»检查“ TextFX字符”,单击“安装”。参见此处:textfx.no-ip.com/textfx

– Kalpesh Panchal
2012年7月25日在16:18



-第4部分中的“排序不区分大小写”是有效的)

– Theta30
2014年4月1日23:43

@ Theta30:猜猜自从我使用的版本以来,UI文本已更改。

–古努比
2014年4月2日在17:56

对于那些使用Eclipse的用户,请参见此答案以更简单地执行此操作。 (我知道最初的问题要求使用Notepad ++,但认为对于那些绊脚石的人来说,这是值得添加的)。

–史蒂夫·钱伯斯(Steve Chambers)
15年6月25日在15:38

在64位版本中,TextFX不是受支持的插件。

–琉璃
19年2月21日在22:16

#2 楼

也可以在没有TextFX插件的Notepad ++中完成此操作。它遵循与接受的答案相同的策略,但是使用本机功能。操作如下:


编辑>全选
编辑>列编辑器...>选择要插入的数字>设置初始数字为1>设置增量为1 >检查前导零>单击确定




编辑>线操作>以降序对线进行排序
编辑:最近的更新增加了额外的排序选项,以下选项:按字母顺序对行进行降序排序似乎可以解决问题。 Alt + Shift选择)或搜索/替换



评论


它可以工作,但是要记住两件事:1-它在最后(空)行插入了一个额外的数字,因此您必须在排序之前将其删除。 2-如果列表以数字开头,则您可能会将插入的数字与数字弄混,因为它不会在插入的数字之后插入空格,因此在这种情况下,请务必小心。

–弗朗西斯科·阿尔瓦拉多(Francisco Alvarado)
2015年9月3日15:58在

无法重现步骤3。新版本更改了措辞,并且任何选项对我均不起作用

– Oker
17 Dec 6'在15:24



@TrevorYoung-您正在抱怨其他用户添加的图像。我只是固定了答案的格式并批准了编辑。如果发现图像无用,请删除它,您就是答案的作者。图片的添加是可以接受的修改(即,使用图片的答案要好于没有图片的答案)

–猎犬
17年12月7日在22:08



@Ramhound我很抱歉。查看编辑历史记录,我认为您已经添加了图像,但事实并非如此。我对那里的图像没有问题,但是我正尝试向提出建议的人提出建议,如果改用给定的建议可能会更好。

–特雷弗·杨(Trevor Young)
17年12月8日在17:10

这很奇怪,但是有效...

–kayleeFrye_onDeck
18年2月21日在1:22

#3 楼

好吧,由于我们提供了代码示例,因此,如果您使用的是Windows 7,或者您已经在其他Windows版本上安装了PowerShell,则:

$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上,将代码粘贴到哪里?这真的很有趣。

– Danpe
2011年9月2日13:58

打开开始菜单,然后键入Powershell。双击“ Windows Powershell”。它将打开命令提示符。在那里运行。还有一个IDE(尽管他们称其为ISE-集成脚本编辑器),但是我在命令提示符下完成了大部分工作,并且使用GVim进行脚本编辑。

–EBGreen
2011年9月2日14:04

如何将其集成到Notepad ++中? (问题的标题是“ Notepad ++中的翻转或反向行顺序”。)

– Peter Mortensen
19年7月14日在11:55

这就是为什么它是评论而不是答案。这是完成我认为用户想要的内容的替代方法,而不是对字面问题的答案。

–EBGreen
19年8月23日在4:45

#4 楼

如果您愿意编译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";,以便添加换行符(如果在Unix / Linux上,请省略\r)。免责声明:我尚未测试此代码(在记事本中很快就写好了),但看起来可行。

评论


谢谢男人:)但我已经使用了我的代码,但是对其他人可能非常有帮助。顺便说一句,也许我会为此编写一个Notepad ++插件。他们在notepad ++插件中使用哪种语言?

– Danpe
2011年9月2日于13:17

@Danpe大多数Notepad ++插件都是用C ++编写的,但从技术上讲,它可以扩展到能够编译.DLL(并带有适当的API绑定)的任何其他语言。

–突破
2011年9月2日于13:44

所以我认为您刚刚创建了一个插件:)

– Danpe
2011年9月2日13:59

如何将其集成到Notepad ++中? (问题的标题是“ Notepad ++中的翻转或反向行顺序”。)

– Peter Mortensen
19年7月14日在11:46

#5 楼

使用可单击的在线可用工具


评论


如何将其集成到Notepad ++中? (问题的标题是“ Notepad ++中的翻转或反向行顺序”。)

– Peter Mortensen
19年7月14日在11:54



#6 楼

您可以在网站http://textmechanic.co/Sort-Text-Lines.html
上在线进行操作

评论


网站已损坏,但似乎已移至textmechanic.co/Sort-Text-Lines.html

–显示名称
2015年5月4日18:00

@georgechalhoub谢谢,我更新了答案。

–弗朗克·德农库尔
2015年5月4日20:39

如何将其集成到Notepad ++中? (问题的标题是“ Notepad ++中的翻转或反向行顺序”。)

– Peter Mortensen
19年7月14日在11:55

#7 楼

这是我刚刚写的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);
        }
    }
}


评论


为什么这里需要在Main上使用unsafe关键字?

–突破
2011年9月6日19:05



@Break我不知道它怎么到达的:

– Danpe
2011年9月7日15:31

我们如何将其集成到notepad ++中?

–风土人情
17年2月13日在18:41

如何将其集成到Notepad ++中? (问题的标题是“ Notepad ++中的翻转或反向行顺序”。)

– Peter Mortensen
19年7月14日在11:55

#8 楼

这是一种非编码方式:


下载/安装TextPad免费试用版
打开电子表格程序(即Excel),并在“ A”列中创建数字1000到1500。在单元格A1中放置“ 1000”,然后在单元格A2中放置A1 + 1,然后将其复制到A500。
在TextPad中打开文本文件
在TextPad中更改为“阻止模式”
将电子表格中的列A粘贴到TextPad中(由于块模式,所有行都将在左边缘结束)
使用TextPad排序功能,降序
使用TextPad块模式删除以消除数字/>

评论


如果您仍然要使用excel,只需从任何编辑器复制文件内容,然后粘贴到excel。用一系列数字填充下一列的序列。选择两个列,然后在数字列上降序排列。复制文本列并粘贴回编辑器。

–EBGreen
2011年9月2日在15:15

@EBGreen,您是正确的。我是个白痴。您只需要小心,因为Excel会更改您的数据(带有数字,日期等的内容)。

–戴尔
2011-09-5 12:27



如何将其集成到Notepad ++中? (问题的标题是“ Notepad ++中的翻转或反向行顺序”。)

– Peter Mortensen
19年7月14日在11:55

@PeterMortensen,最初的问题是:“如果在Notepad ++中不可用,那么其他软件也是不错的方法:)

–戴尔
19年7月22日在15:19

#9 楼

如果您希望单击即可在Notepad ++上自动化:


获取此Python脚本插件
添加以下代码并将其另存为.py文件在Python脚本文件夹中(要知道此文件夹的位置,请单击“插件”选项卡,然后单击“ Python脚本”和新脚本)。

Reck Dickhard的所有荣耀!菜单:

如果单击插件选项卡→Python脚本→配置,则可以将该脚本分配给工具栏图标或Python脚本菜单本身。 (如果您将脚本分配给菜单,则它将立即显示,但是直到下一次Notepad ++启动时,您才能为其分配快捷方式。如果您将其分配给工具栏图标,则它将仅显示在下一次启动Notepad ++。)