Notepad ++ 'da satır sırasını ters çevirin veya ters çevirin


95

Bir belgenin satır siparişlerini 500+ satır ile çevirmek istiyorum. Satırlar sadece rakamlar değildir, bazıları metin ve diğer karakterleri içerir. Bu bir karışım.

Örnek:

Satır 1
Hat 2
Satır 3
Satır 4
Satır 5
Satır 6

Hangisini daha sonra çevirmek, ters çevirmek ve aşağıdan yukarıya doğru bakmak istiyorum:

Satır 6
Satır 5
Satır 4
Satır 3
Hat 2
Satır 1

Yani sol kenardaki sayıların geri sayılmasını mı istiyorsun, yoksa dosyanızın asıl içeriğinin tersine çevrilmesini mi istiyorsun?
Saat

2
@Maxpm Ters çevrilecek dosyanın gerçek içeriği.
Danpe


Yanıtlar:


102

Normal olarak dahil edilen TextFX eklentisi dışında başka bir yazılım gerektirmeyen çözüm:

  1. Düzenle> Tümünü Seç
  2. TextFX> TextFX Araçları> Satır Numaraları Ekleme
  3. TextFX> TextFX Araçları> + Artan sırala seçeneği işaretliyse, işaretini kaldırın
  4. TextFX> TextFX Araçları> Büyük / küçük harfe duyarlı satırları sırala (sütunda)
  5. TextFX> TextFX Araçları> Satır Numaralarını veya İlk Kelimeyi Sil

6
TextFX bulunmazsa, şu adrese gidin: Eklentiler »Eklenti Yöneticisi» Eklenti Yöneticisini Göster »" TextFX Karakterlerini Kontrol Et "i tıklayın, Kur'a tıklayın. Buraya bakın: textfx.no-ip.com/textfx
Kalpesh Panchal

-Ne çalıştı Bölüm 4 "sıraları küçük harf duyarsız" idi)
Theta30

@ Theta30: Kullandığım sürümden beri UI metninin değiştiğini tahmin ediyorum.
Gnubie

2
Eclipse kullananlar için bunu daha basit yapmak için bu cevaba bakınız . (Notepad ++ için sorulan orijinal soruyu biliyorum, ancak bunun bunun arasında tökezleyenler için eklemeye değeceğini düşündüm).
Steve Chambers,

2
TextFX, 64 bit sürümde desteklenen bir eklenti değildir.
16'da Rhyous

34

Bu ayrıca, TextFX eklentisi olmadan Notepad ++ 'da da yapılabilir. Kabul edilen cevabın stratejisinin aynısını izler, ancak yerel işlevselliği kullanır. Aşağıdaki gibi yapılır:

  1. Düzenle> Tümünü Seç
  2. Düzenle> Sütun Düzenleyicisi ...> Eklenecek Numarayı Seçin> İlk sayıyı 1 olarak ayarlayın> 1'e kadar artırın>> Lider sıfırları kontrol edin> Tamam'ı tıklayın.

görüntü tanımını buraya girin

  1. Düzen> Azalan al Çizgi Operasyonlar> Sıralama Hatları Edit: yeni bir güncelleştirme ekstra sıralama seçenekleri eklendi, opsiyon: Sıralama Hatları leksikografik Azalan işi gibi görünüyor.

görüntü tanımını buraya girin

  1. Her iki kutu seçiminden de Satır Numaralarını Kaldırma (Alt + Sol Tıkla Sürükle veya Alt + Shift Seç) veya Ara / Değiştir

görüntü tanımını buraya girin


1
Çalışır, ancak akılda tutulması gereken iki şey vardır: 1- Son (boş) satır için fazladan bir sayı ekler, bu yüzden sıralamadan önce silmeniz gerekir. 2- Listeniz sayılarla başlıyorsa, eklenen sayıları sayılarınızla karıştırabilirsiniz, çünkü sayıları girdikten sonra boşluk bırakmaz, bu durumda dikkatli olmalısınız.
Francisco Alvarado

3. adım çoğaltılamıyor. Yeni sürüm ifadeleri değiştirdi ve hangi seçenek benim için işe yaramazsa
Ooker

1
@TrevorYoung - Başka bir kullanıcı tarafından eklenen bir resimden şikayetçiniz var . Ben sadece cevabın formatını düzelttim ve düzenlemeyi onayladım. Resmi yararsız bulursanız, daha sonra kaldırın, cevabın yazarı sizsiniz. Resmin eklenmesi kabul edilebilir bir düzenlemedir (yani cevap resimdeki resim olmadan olduğundan daha iyidir)
Ramhound

1
@Ramhound Özür dilerim. Düzenleme geçmişine baktığımda, resmi eklediğinizi sanıyordum, ancak durum böyle değil. Görüntünün orada olmasıyla ilgili bir sorunum yok, ancak verilen öneri yerine getirilmesinin daha iyi olabileceğini ekleyen kişiye bir öneri vermeye çalışıyordum.
Trevor Young,

1
Bu garip ama işe yarıyor ...
kayleeFrye_onDeck

6

Eh, kod örnekleri verdiğimizden, Windows 7 kullanıyorsanız veya PowerShell'i başka bir Windows sürümüne yüklediyseniz, o zaman:

$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

Veya kodlamayan bir cevap için, gVim'i indirin , dosyayı açın ve şunu yazın:

:g/^/m0

Windows 7'deyim, Bu kodu nereye yapıştırabilirim? bu gerçekten çok ilginç.
Danpe

2
Başlat menüsünü açın ve sadece Powershell yazın. "Windows Powershell" üzerine çift tıklayın. Bir komut istemi açacaktır. Oraya koş. Ayrıca ve IDE de (ISE - Tümleşik Komut Dosyası Düzenleyicisi olarak adlandırsalar da), ancak çalışmalarımın çoğunu komut isteminde yapıyorum ve GVim'i komut dosyası düzenleme için kullanıyorum.
EBGreen 14

Bu, Notepad ++ 'a nasıl entegre edilebilir? (Sorunun başlığı "Notepad ++ 'da satır sırasını çevir veya ters çevir" dir .)
Peter Mortensen

Bu yüzden bir cevaptan çok bir yorum. Bu, kelimenin tam anlamıyla bir soruya cevap vermek yerine, kullanıcının istediğini düşündüğümü başarmanın alternatif bir yoludur.
EBGreen

5

C ++ 'yı derlemekte rahat ediyorsanız, işin püf noktasıdır. Temel olarak, dosyanın her satırını bir vektöre koydum ve ters bir yineleyici kullanarak yeni bir dosyaya çıktı.

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

Çıktı dosyası satır aralarında satır sonları eksikse, o zaman değiştirmek outFile << *rIt;olmak outFile << *rIt << "\r\n";(ihmal öylesine bir satır sonu eklenir \rEğer Unix / Linux üzerinde iseniz).

Feragatname: Bu kodu test etmedim (Notepad'de çok hızlı yazdım), ancak geçerli görünüyor.


Teşekkürler dostum :) ama kodumu zaten kullandım, ancak bu diğerleri için çok yararlı olabilir. BTW belki bunun için bir Notepad ++ eklentisi yazacağım. notepad ++ eklentilerinde hangi dilleri kullanıyorlar?
Danpe

@Danpe çoğu Notepad ++ eklentileri C ++ dilinde yazılmıştır, ancak teknik olarak bir .DLL (ve uygun API bağlantıları ile) oluşturabilen herhangi bir dile genişletilebilir.
Atılım

Sanırım az önce bir eklenti yarattın :)
Danpe

Bu, Notepad ++ 'a nasıl entegre edilebilir? (Sorunun başlığı "Notepad ++ 'da satır sırasını çevir veya ters çevir" dir .)
Peter Mortensen



1

İşte C #. NET kodu sadece yazdım :)

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

unsafeAnahtar kelimeye neden Mainburada ihtiyacınız var?
Atılım

@Break Oraya nasıl gittiğini bilmiyorum: O lol sabit.
Danpe

1
Bunu notepad ++ 'a nasıl entegre edebiliriz?
Teoman shipahi

Bu, Notepad ++ 'a nasıl entegre edilebilir? (Sorunun başlığı "Notepad ++ 'da satır sırasını çevir veya ters çevir" dir .)
Peter Mortensen

0

İşte kodlamayan bir yol:

  1. Download / Install TextPad ücretsiz deneme sürümü
  2. Bir elektronik tablo programını açın (örn. Excel) ve A1 hücresine "1000" koyarak, ardından A1 hücresini A2 hücresine A1 + 1 koyarak, ardından A500 sütununa "A" sütununda 1000 ile 1500 arasında sayılar oluşturun.
  3. Metin dosyanızı TextPad’de açın
  4. TextPad'de "blok modu" olarak değiştirin
  5. E sayfasından A sütununu TextPad'e yapıştırın (tümü blok kipinden dolayı sol kenar boşluğuna gelecek)
  6. TextPad sıralama özelliğini kullanın, azalan
  7. Sayılardan kurtulmak için TextPad blok modu silme özelliğini kullanın

2
Eğer yine de excel kullanacaksanız, sadece dosya içeriğini herhangi bir düzenleyiciden kopyalayın, excel'e yapıştırın. Bir sonraki sütuna bir dizi sütunu bir dizi sayıyla doldurun. Her iki sütunu da seçin ve sayı sütununa inerek sıralayın. Metin sütununu kopyalayın ve tekrar düzenleyiciye yapıştırın.
EBGreen

@EBGreen, haklısın. Ben bir aptalım. Excel'in verilerinizi değiştireceği için dikkatli olmanız gerekir (sayılar, tarihler vb.)
Dale

Bu, Notepad ++ 'a nasıl entegre edilebilir? (Sorunun başlığı "Notepad ++ 'da satır sırasını çevir veya ters çevir" dir .)
Peter Mortensen

@PeterMortensen, Orijinal soru "Notepad ++ 'da mevcut değilse, o zaman da iyi olan diğer yazılımlar :)" dedi
Dale

0

Bunu tek bir tıklamayla Notepad ++ 'da otomatikleştirmek istiyorsanız:

  1. Bu Python betiği eklentisini edinin
  2. aşağıdaki kodu ekleyin ve Python betiği klasörüne .py dosyası olarak kaydedin (bu klasörün yerini bilmek için, eklentiler sekmesini, ardından Python Komut Dosyası ve yeni komut dosyaları) tıklayın.

Tüm şan Reck Dickhard !

Bağlam menüsünde eklemek için:

Eklentiler sekmesini → Python ScriptYapılandırma'yı tıklarsanız, komut dosyasını bir araç çubuğu simgesine veya Python Script menüsünün kendisine atayabilirsiniz. (Menüye bir komut dosyası atarsanız, o zaman hemen görünür, ancak bir dahaki not defteri ++ başlayana kadar kısayol atayamazsınız. Bir araç çubuğu simgesine atarsanız, o zaman sadece Notepad ++ 'nın sonraki başlangıcı.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.