Lật hoặc đảo ngược thứ tự dòng trong Notepad ++


95

Tôi muốn lật các đơn hàng của một tài liệu với hơn 500 dòng. Các dòng không chỉ là số, một số bao gồm văn bản và các ký tự khác. Đó là một sự pha trộn.

Thí dụ:

Dòng 1
Dòng 2
Dòng 3
Dòng 4
Dòng 5
Dòng 6

Mà sau đó tôi muốn lật, đảo ngược và trông như thế này từ dưới lên trên:

Dòng 6
Dòng 5
Dòng 4
Dòng 3
Dòng 2
Dòng 1

Có nghĩa là bạn muốn các số ở lề trái đếm ngược hoặc bạn muốn đảo ngược nội dung thực sự của tệp?
Tối đa

2
@Maxpm Nội dung thực tế của tệp sẽ được đảo ngược.
Danpe


Liên quan (nhưng không trùng lặp): Cách đảo ngược tệp văn bản trên Windows
Peter Mortensen

Câu trả lời:


102

Giải pháp không yêu cầu phần mềm khác ngoại trừ plugin TextFX được bao gồm thông thường:

  1. Chỉnh sửa> Chọn tất cả
  2. TextFX> Công cụ TextFX> Chèn số dòng
  3. Nếu Công cụ TextFX> Công cụ TextFX> + Sắp xếp tăng dần được chọn, bỏ chọn nó
  4. TextFX> Công cụ TextFX> Sắp xếp phân biệt chữ hoa chữ thường (tại cột)
  5. TextFX> Công cụ TextFX> Xóa số dòng hoặc từ đầu tiên

6
Nếu không tìm thấy TextFX, hãy truy cập: Plugins »Trình quản lý plugin» Hiển thị Trình quản lý plugin »Kiểm tra" Ký tự TextFX ", nhấp vào Cài đặt. Xem tại đây: textfx.no-ip.com/textfx
Kalpesh Panchal

-có tác dụng gì là "Sắp xếp các dòng không nhạy cảm" trong phần 4)
Theta30

@ Theta30: Đoán văn bản UI đã thay đổi kể từ phiên bản tôi đã sử dụng.
Gnubie

2
Đối với những người sử dụng Eclipse, hãy xem câu trả lời này để làm điều này thậm chí còn đơn giản hơn. (Tôi biết câu hỏi ban đầu được yêu cầu cho Notepad ++ nhưng nghĩ rằng điều này sẽ đáng để thêm vào cho những vấp ngã này).
Steve Chambers

2
TextFX không phải là một plugin được hỗ trợ trong phiên bản 64 bit.
Rhyous

34

Điều này cũng có thể được thực hiện trong Notepad ++ mà không cần plugin TextFX. Nó tuân theo cùng một chiến lược của câu trả lời được chấp nhận, nhưng sử dụng chức năng riêng. Nó được thực hiện như sau:

  1. Chỉnh sửa> Chọn tất cả
  2. Chỉnh sửa> Trình chỉnh sửa cột ...> Chọn Số để chèn> Đặt số ban đầu thành 1> Đặt tăng theo 1> Kiểm tra số 0 đứng đầu> Nhấp OK

nhập mô tả hình ảnh ở đây

  1. Chỉnh sửa> Hoạt động dòng> Sắp xếp các dòng theo thứ tự giảm dần Chỉnh sửa: Một bản cập nhật gần đây đã thêm các tùy chọn sắp xếp bổ sung, tùy chọn: Sắp xếp các dòng theo thứ tự giảm dần dường như thực hiện công việc.

nhập mô tả hình ảnh ở đây

  1. Xóa số dòng thông qua lựa chọn hộp (Alt + Nhấp chuột trái Kéo hoặc Alt + Shift Chọn) hoặc Tìm kiếm / Thay thế

nhập mô tả hình ảnh ở đây


1
Nó hoạt động, nhưng có hai điều cần lưu ý: 1- Nó chèn thêm một số cho hàng cuối cùng (trống), vì vậy bạn phải xóa nó trước khi sắp xếp. 2- nếu danh sách của bạn bắt đầu bằng các số, bạn có thể làm rối các số được chèn với các số của mình, vì nó không chèn một khoảng trắng sau các số được chèn, vì vậy bạn nên cẩn thận trong trường hợp này.
Francisco Alvarado

Không thể sao chép bước 3. Phiên bản mới đã thay đổi từ ngữ và bất kỳ tùy chọn nào không phù hợp với tôi
Ooker

1
@TrevorYoung - Bạn đang phàn nàn về một hình ảnh được thêm bởi một người dùng khác . Tôi chỉ sửa định dạng của câu trả lời và phê duyệt chỉnh sửa. Nếu bạn thấy hình ảnh không có ích, sau đó loại bỏ nó, bạn là tác giả của câu trả lời. Việc bổ sung hình ảnh là một chỉnh sửa chấp nhận được (nghĩa là câu trả lời tốt hơn với hình ảnh hơn là không có)
Ramhound

1
@Ramhound Lời xin lỗi của tôi. Nhìn vào lịch sử chỉnh sửa, tôi nghĩ rằng bạn đã thêm hình ảnh, nhưng đó không phải là trường hợp. Tôi không có vấn đề gì với hình ảnh ở đó, nhưng đã cố gắng đưa ra một gợi ý cho người đã thêm rằng nó có thể tốt hơn nếu đề xuất được đưa ra thay thế.
Trevor Young

1
Điều này thật kỳ lạ nhưng nó hoạt động ...
kayleeFrye_onDeck

6

Chà, vì chúng tôi đang đưa ra các ví dụ về mã, Nếu bạn đang dùng Windows 7 hoặc bạn đã cài đặt PowerShell trên một phiên bản Windows khác, thì:

$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

Hoặc đối với câu trả lời không mã hóa, tải xuống gVim , mở tệp và nhập:

:g/^/m0

Tôi đang dùng Windows 7, tôi dán mã đó ở đâu? điều này thực sự gây chú ý
Danpe

2
Mở menu bắt đầu và chỉ cần gõ Powershell. Nhấp đúp chuột vào "Windows Powershell". Nó sẽ mở một dấu nhắc lệnh. Chạy nó đến đó. Ngoài ra còn có IDE và mặc dù họ gọi nó là ISE - Trình biên tập tập lệnh tích hợp), nhưng tôi thực hiện hầu hết công việc của mình tại dấu nhắc lệnh và tôi sử dụng GVim để chỉnh sửa tập lệnh.
EBGreen

Làm thế nào điều này có thể được tích hợp vào Notepad ++? (Tiêu đề của câu hỏi là "Lật hoặc đảo ngược thứ tự trong Notepad ++" .)
Peter Mortensen

Đó là lý do tại sao nó là một bình luận chứ không phải là một câu trả lời. Đó là một cách khác để thực hiện những gì tôi nghĩ người dùng muốn hơn là một câu trả lời cho câu hỏi theo nghĩa đen.
EBGreen

5

Nếu bạn cảm thấy thoải mái khi biên dịch C ++, thì đây là một mẹo nhỏ. Về cơ bản, tôi đặt từng dòng của tệp vào một vectơ và xuất nó thành một tệp mới bằng cách sử dụng một trình vòng lặp ngượ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;
}

Nếu tệp đầu ra bị thiếu ngắt dòng giữa các dòng, thì hãy thay đổi thành outFile << *rIt;để outFile << *rIt << "\r\n";ngắt dòng được thêm vào (bỏ qua \rnếu bạn đang trên Unix / Linux).

Tuyên bố miễn trừ trách nhiệm: Tôi chưa kiểm tra mã này (tôi đã viết nó rất nhanh trong Notepad), nhưng có vẻ khả thi.


Cảm ơn người đàn ông :) nhưng tôi đã sử dụng mã của mình, nhưng điều đó có thể rất hữu ích cho những người khác. Btw có lẽ tôi sẽ viết một plugin Notepad ++ cho điều đó. họ sử dụng ngôn ngữ nào trong plugin notepad ++?
Danpe

@Danpe hầu hết các plugin Notepad ++ được viết bằng C ++, nhưng về mặt kỹ thuật có thể được mở rộng sang bất kỳ ngôn ngữ nào khác có khả năng biên dịch .DLL (và với các ràng buộc API thích hợp).
Đột phá

Vì vậy, tôi nghĩ rằng bạn vừa tạo một plugin :)
Danpe

Làm thế nào điều này có thể được tích hợp vào Notepad ++? (Tiêu đề của câu hỏi là "Lật hoặc đảo ngược thứ tự trong Notepad ++" .)
Peter Mortensen


2

Bạn có thể làm điều đó trực tuyến trên trang web http://textmechanic.co/Sort-Text-Lines.html


1
Tuy nhiên, trang web đã bị hỏng, có vẻ như nó đã được chuyển sang textmechanic.co/Sort-Text-Lines.html
George Chalhoub

1
@georgechalhoub Cảm ơn, tôi đã cập nhật câu trả lời.
Franck Dernoncourt

Làm thế nào điều này có thể được tích hợp vào Notepad ++? (Tiêu đề của câu hỏi là "Lật hoặc đảo ngược thứ tự trong Notepad ++" .)
Peter Mortensen

1

Đây là mã C # .NET cho nó tôi vừa viết :)

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

Tại sao bạn cần unsafetừ khóa Mainở đây?
Đột phá

@Break Tôi không biết làm thế nào nó đạt được điều đó: O lol đã sửa.
Danpe

1
Làm thế nào chúng ta có thể tích hợp nó vào notepad ++?
Teoman shipahi

Làm thế nào điều này có thể được tích hợp vào Notepad ++? (Tiêu đề của câu hỏi là "Lật hoặc đảo ngược thứ tự trong Notepad ++" .)
Peter Mortensen

0

Đây là một cách không mã hóa:

  1. Tải xuống / Cài đặt bản dùng thử miễn phí TextPad
  2. Mở chương trình bảng tính (ví dụ Excel) và tạo các số 1000 đến 1500 trong cột "A" bằng cách đặt "1000" vào ô A1, sau đó đặt A1 + 1 vào ô A2, sau đó sao chép xuống A500.
  3. Mở tệp văn bản của bạn trong TextPad
  4. Thay đổi thành "chế độ chặn" trong TextPad
  5. Dán cột A từ bảng tính vào TextPad (tất cả sẽ kết thúc ở lề trái do chế độ chặn)
  6. Sử dụng tính năng sắp xếp TextPad, giảm dần
  7. Sử dụng xóa chế độ khối TextPad để thoát khỏi các số

2
tốt, nếu bạn vẫn sẽ sử dụng excel, chỉ cần sao chép nội dung tệp từ bất kỳ trình chỉnh sửa nào, dán vào excel. Điền vào chuỗi cột tiếp theo với một loạt các số. Chọn cả hai cột và sắp xếp giảm dần trên cột số. Sao chép cột văn bản và dán lại vào trình chỉnh sửa.
EBGreen

@EBGreen, bạn đúng rồi. Tôi là một thằng ngốc. Bạn chỉ cần cẩn thận vì Excel sẽ thay đổi dữ liệu của bạn (lộn xộn với số, ngày và như vậy).
Dale

Làm thế nào điều này có thể được tích hợp vào Notepad ++? (Tiêu đề của câu hỏi là "Lật hoặc đảo ngược thứ tự trong Notepad ++" .)
Peter Mortensen

@PeterMortensen, Câu hỏi ban đầu cho biết "Nếu nó không có sẵn trong Notepad ++ thì phần mềm khác cũng sẽ tốt :)"
Dale

0

Nếu bạn muốn tự động hóa điều này trên Notepad ++ chỉ bằng một cú nhấp chuột:

  1. Nhận plugin tập lệnh Python này
  2. thêm mã bên dưới và lưu nó dưới dạng tệp .py trong thư mục tập lệnh Python (để biết vị trí của thư mục này, nhấp vào tab plugin, sau đó là Python Script và tập lệnh mới).

Tất cả vinh quang cho Reck Dickhard !

Để thêm nó trong menu ngữ cảnh:

Nếu bạn nhấp vào tab plugin → Tập lệnh PythonCấu hình , bạn có thể gán tập lệnh cho biểu tượng thanh công cụ hoặc cho chính menu Python Script. (Nếu bạn gán tập lệnh cho menu, thì nó sẽ xuất hiện ngay lập tức, nhưng bạn sẽ không thể gán phím tắt cho đến khi Notepad ++ bắt đầu. Nếu bạn gán nó cho biểu tượng thanh công cụ, thì nó sẽ chỉ xuất hiện trên bắt đầu tiếp theo của Notepad ++.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.