在 Notepad++ 中翻转或反转行序

Dan*_*npe 119 notepad++

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

例子:

1号线
2号线
3号线
4号线
5号线
6号线

然后我想翻转,反转并从下到上看起来像这样:

6号线
5号线
4号线
3号线
2号线
1号线

Gnu*_*bie 116

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

  1. 编辑 > 全选
  2. TextFX > TextFX 工具 > 插入行号
  3. 如果选中 TextFX > TextFX Tools > +Sort 升序,取消选中它
  4. TextFX > TextFX 工具 > 排序行区分大小写(在列)
  5. TextFX > TextFX 工具 > 删除行号或第一个单词

  • 如果未找到 TextFX,则转到:插件 » 插件管理器 » 显示插件管理器 » 选中“TextFX 字符”,单击安装。见这里:http://textfx.no-ip.com/textfx/ (8认同)
  • TextFX 不是 64 位版本支持的插件。 (3认同)
  • 对于那些使用 Eclipse 的人,请参阅 [这个答案](http://stackoverflow.com/questions/3632206/does-eclipse-have-a-way-to-alphabetically-sort-lines-within-a-selection-of-text# 6689833)更简单地做到这一点。*(我知道最初的问题是针对 Notepad++ 的,但我认为对于那些遇到这个问题的人来说,这值得添加)。* (2认同)

Tre*_*ung 53

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

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

在此处输入图片说明

  1. 编辑 > 行操作 > 按降序排序行 编辑:最近的更新添加了额外的排序选项,选项:按字典顺序降序排序行似乎可以完成这项工作。

在此处输入图片说明

  1. 通过框选择(Alt+左键单击拖动或 Alt+Shift 选择)或搜索/替换删除行号

在此处输入图片说明

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

EBG*_*een 7

好吧,既然我们给出了代码示例,如果您使用的是 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
Run Code Online (Sandbox Code Playgroud)

或者对于非编码答案,下载gVim,打开文件并输入:

:g/^/m0
Run Code Online (Sandbox Code Playgroud)

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

Bre*_*ugh 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;
}
Run Code Online (Sandbox Code Playgroud)

如果输出文件丢失字里行间换行符,然后改变outFile << *rIt;outFile << *rIt << "\r\n";这么一个换行符被添加(省略的\r,如果你是在Unix / Linux)。

免责声明:我没有测试过这段代码(我在记事本中写得非常快),但它看起来可行。