題 在Notepad ++中翻轉或反轉行順序


我想翻轉500行以上的文檔的行順序。這些行不僅僅是數字,還包括文本和其他字符。這是一個混合。

例:

第1行
第2行
3號線
第4行
第5行
6號線

然後我想從下到上翻轉,反轉並看起來像這樣:

6號線
第5行
第4行
3號線
第2行
第1行

85
2017-09-02 12:19


起源


這意味著您希望左邊距上的數字倒計時,或者您希望文件的實際內容被反轉? - Maxpm
@Maxpm要反轉的文件的實際內容。 - Danpe
可能重複 在Notepad ++中反轉行順序 - Franck Dernoncourt


答案:


解決方案除了通常包含的TextFX插件外不需要其他軟件:

  1. 編輯>全選
  2. TextFX> TextFX工具>插入行號
  3. 如果選中TextFX> TextFX工具> +升序排序,請取消選中它
  4. TextFX> TextFX工具>對行區分大小寫的行(在列中)
  5. TextFX> TextFX工具>刪除行號或第一個單詞

91
2018-02-21 12:07



如果找不到TextFX,請轉到:插件»插件管理器»顯示插件管理器»選中“TextFX字符”,單擊“安裝”。看這裡: textfx.no-ip.com/textfx - Kalpesh Panchal
什麼工作是第4部分中的“排序行不區分大小寫” - Theta30
@ Theta30:猜猜自我使用的版本以來UI文本已經改變。 - Gnubie
對於那些使用Eclipse的人看 這個答案 這樣做更簡單。 (我知道最初的問題要求Notepad ++,但認為這對於那些絆腳石的人來說是值得的。) - Steve Chambers
@SteveChambers more simply 是輕描淡寫。只需點擊兩下鼠標,您就可以突出顯示所需的線條並反轉它們。非常感謝Steve指出這一點,它讓我今天的生活更輕鬆。 - b1nary.atr0phy


這也可以在沒有TextFX插件的Notepad ++中完成。它遵循與已接受答案相同的策略,但使用本機功能。它完成如下:

  1. 編輯>全選
  2. 編輯>列編輯器...>選擇要插入的數字>將初始編號設置為1>將增加設置為1>檢查前導零>單擊確定

enter image description here

  1. 編輯>線操作>按降序排序 編輯: 最近的更新添加了額外的排序選項,選項: 排序行按字典順序降序 似乎做了這個工作。

enter image description here

  1. 通過框選擇(Alt +左​​鍵單擊拖動或Alt + Shift選擇)或搜索/替換刪除行號

enter image description here


21
2018-04-08 19:08



它有效,但有兩點需要注意:1-它為最後一個(空)行插入一個額外的數字,所以你必須在排序之前刪除它。 2-如果你的列表以數字開頭,你可以用你的數字弄亂插入的數字,因為它在插入的數字後沒有插入空格,所以在這種情況下你應該小心。 - Francisco Alvarado
無法重現第3步。新版本 改變了措辭,無論什麼選擇對我都不起作用 - Ooker
@Ooker我更新了第3步。如果有效,請告訴我。 - Trevor Young
@TrevorYoung - 你在抱怨另一個人添加的圖像 用戶。  我只修復了答案的格式並批准了編輯。如果您發現圖片無用,請將其刪除,您就是答案的作者。添加圖像是可接受的編輯(即圖像的答案比沒有圖像時更好) - Ramhound
@Ramhound我道歉。查看編輯歷史記錄,我認為您已添加了圖像,但事實並非如此。我對那裡的形像沒有任何問題,但是他試圖向那些補充說明如果給出的建議改為可能會更好的人提出建議。 - Trevor Young


好吧,既然我們提供了代碼示例,如果您使用的是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

6
2017-09-02 13:32



我在Windows 7上,我在哪裡粘貼該代碼?這真的很有意思。 - Danpe
打開開始菜單,然後輸入Powershell。雙擊“Windows Powershell”。它將打開命令提示符。在那裡運行它。還有IDE(儘管他們稱之為ISE - 集成腳本編輯器),但我在命令提示符下完成了大部分工作,並使用GVim進行腳本編輯。 - EBGreen


如果你很樂意編譯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)。

免責聲明:我沒有測試過這段代碼(我在記事本中寫得很快),但它看起來很可行。


5
2017-09-02 13:11



謝謝男人:)但我已經使用了我的代碼,但這對其他人來說非常有幫助。順便說一句,也許我會寫一個Notepad ++插件。他們在記事本++插件中使用哪種語言? - Danpe
@Danpe大多數Notepad ++插件都是用C ++編寫的,但在技術上可以擴展到任何其他能夠編譯.DLL的語言(以及適當的API綁定)。 - Breakthrough
所以我認為你剛剛創建了一個插件:) - Danpe


使用可通過點擊進行操作的在線可用工具

http://www.miniwebtool.com/reverse-lines/


4
2017-12-12 08:25





您可以在網站上在線完成 http://textmechanic.co/Sort-Text-Lines.html


2
2018-02-28 15:51



網站雖然破了,但似乎已經搬到了 textmechanic.co/Sort-Text-Lines.html - George Chalhoub
@georgechalhoub謝謝,我更新了答案。 - Franck Dernoncourt


這是我剛剛寫的一個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);
        }
    }
}

1
2017-09-02 13:15



你為什麼需要 unsafe 關鍵字 Main 這裡? - Breakthrough
@Break我不知道它到底是怎麼回事:O lol修復了。 - Danpe
我們如何將其整合到記事本++中? - Teoman shipahi


這是一種非編碼方式:

  1. 下載/安裝TextPad免費試用版
  2. 打開電子表格程序(即Excel)並在單元格A1中創建數字1000到1500,在單元格A1中放置“1000”,然後將A1 + 1放在單元格A2中,然後將其複製到A500。
  3. 在TextPad中打開文本文件
  4. 在TextPad中更改為“阻止模式”
  5. 將電子表格中的A列粘貼到TextPad中(由於塊模式,所有內容都會在左邊距處結束)
  6. 使用TextPad排序功能,降序
  7. 使用TextPad塊模式刪除來刪除數字

0
2017-09-02 14:32



好吧,如果你打算使用excel,只需從任何編輯器複製文件內容,粘貼到excel。用一系列數字填寫下一欄的系列。選擇兩列並按數字列降序排序。複製文本列並粘貼回編輯器。 - EBGreen
@EBGreen,你是對的。我是個白痴。您只需要小心,因為Excel將更改您的數據(與數字,日期等混淆)。 - Dale


如果您希望只需單擊一下即可在記事本++上自動執行此操作:

  1. 得到 這個python腳本 插入
  2. 添加下面的代碼並將其保存為python腳本文件夾中的.py文件(要知道此文件夾的位置,請單擊插件選項卡,然後單擊Python腳本和新腳本)。

所有的榮耀 雷克迪克哈德

編輯:將其添加到上下文菜單中 如果單擊插件選項卡/ Python腳本/配置,則可以將腳本分配給工具欄圖標或Python腳本菜單本身。 (如果您將一個腳本分配給菜單,那麼它將立即出現,但在下次Notepad ++啟動之前您將無法為其指定快捷方式。如果將其分配給工具欄圖標,則它只會出現在下一個Notepad ++的開始。)


0
2018-02-10 11:59