记事本中的翻转或反向行顺序


95

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

例:

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

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

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

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

2
@Maxpm要反转的文件的实际内容。
Danpe 2011年


Answers:


102

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

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

6
如果找不到TextFX,则转到:插件»插件管理器»显示插件管理器»检查“ TextFX字符”,单击“安装”。看到这里:textfx.no-ip.com/textfx
Kalpesh Panchal


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

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

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

34

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

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

在此处输入图片说明

  1. 编辑>线操作>按降序对线进行 编辑编辑:最近的更新添加了额外的排序选项,该选项:“ 按字典顺序对线进行降序排序”似乎可以完成任务。

在此处输入图片说明

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

在此处输入图片说明


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

无法重现第3步。新版本更改了措词,并且任何选项都不适合我
Ooker

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

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

1
这很奇怪,但是有效...
kayleeFrye_onDeck '18

6

好吧,由于我们提供了代码示例,因此,如果您使用的是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年

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

如何将其集成到Notepad ++中?(问题的标题是“ 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 ++插件。他们在notepad ++插件中使用哪种语言?
Danpe 2011年

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

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

如何将其集成到Notepad ++中?(问题的标题是“ 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);
        }
    }
}

为什么unsafeMain这里需要关键字?
突破

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

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

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

0

这是一种非编码方式:

  1. 下载/安装TextPad免费试用版
  2. 打开一个电子表格程序(即Excel),并通过在单元格A1中放置“ 1000”,然后在单元格A2中放置A1 + 1,然后将其复制到A500,在“ A”列中创建数字1000至1500。
  3. 在TextPad中打开文本文件
  4. 在TextPad中更改为“阻止模式”
  5. 将电子表格中的列A粘贴到TextPad中(由于块模式,所有结果都将保留在左边距)
  6. 使用TextPad排序功能,降序
  7. 使用TextPad块模式删除删除数字

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

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

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

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

0

如果您希望通过单击在Notepad ++上自动执行此操作:

  1. 获取此Python脚本插件
  2. 在下方添加代码并将其另存为.py文件在Python脚本文件夹中(要知道该文件夹的位置,请依次点击插件标签,Python脚本和新脚本)。

瑞克·迪克哈德Reck Dickhard)的所有荣耀!

要将其添加到上下文菜单中:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.