web-dev-qa-db-fra.com

Inverser ou inverser l'ordre des lignes dans le Bloc-notes ++

Je souhaite inverser les commandes d'un document comportant plus de 500 lignes. Les lignes ne sont pas que des chiffres, certaines incluent du texte et d’autres caractères. C'est un mélange.

Exemple:

 Ligne 1 
 Ligne 2 
 Ligne 3 
 Ligne 4 
 Ligne 5 
 Ligne 6 

Ce que je veux ensuite retourner, inverser et ressembler à ceci de bas en haut:

 Ligne 6 
 Ligne 5 
 Ligne 4 
 Ligne 3 
 Ligne 2 
 Ligne 1 
92
Danpe

Solution ne nécessitant pas d'autre logiciel que le plugin TextFX normalement inclus:

  1. Édition> Tout sélectionner
  2. TextFX> Outils TextFX> Insérer des numéros de ligne
  3. Si TextFX> Outils TextFX> + Trier par ordre croissant est cochée, décochez-la.
  4. TextFX> Outils TextFX> Lignes de tri sensibles à la casse (en colonne)
  5. TextFX> Outils TextFX> Supprimer des numéros de ligne ou le premier mot
96
Gnubie

Cela peut aussi être fait dans Notepad ++ sans le plugin TextFX. Il suit la même stratégie que celle de la réponse acceptée, mais en utilisant une fonctionnalité native. C'est fait comme suit:

  1. Édition> Tout sélectionner
  2. Édition> Editeur de colonne ...> Sélectionner le numéro à insérer> Définir le nombre initial sur 1> Définir augmenter par 1> Vérifier les zéros à gauche> Cliquez sur OK.

 enter image description here

  1. Édition> Opérations sur les lignes> Trier les lignes dans l'ordre décroissant Éditer: Une mise à jour récente a ajouté des options supplémentaires de tri, l'option: Trier les lignes par ordre décroissant semble faire l'affaire.

 enter image description here

  1. Supprimer des numéros de ligne en sélectionnant une case (Alt + clic gauche, glisser ou Alt + Maj. Sélection) ou Recherche/Remplacer

 enter image description here

25
Trevor Young

Eh bien, puisque nous donnons des exemples de code, si vous utilisez Windows 7 ou que vous avez installé Powershell sur une autre version de Windows, alors:

$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

Ou pour une réponse non codante, téléchargez GVim , ouvrez le fichier et tapez:

:g/^/m0
6
EBGreen

Si vous êtes à l'aise pour compiler C++, cela devrait faire l'affaire. Fondamentalement, je mets chaque ligne du fichier dans un vecteur et les exporte dans un nouveau fichier en utilisant un itérateur inversé.

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

Si le fichier de sortie manque des sauts de ligne entre les lignes, modifiez le outFile << *rIt; en outFile << *rIt << "\r\n"; pour l'ajouter à un saut de ligne (omettez le \r si vous utilisez Unix/Linux).

Disclaimer: Je n'ai pas testé ce code (je l'ai écrit très vite dans Notepad), mais il semble viable.

5
Breakthrough

Utiliser un outil disponible en ligne qui le fait en un clic

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

4
user674167

Vous pouvez le faire en ligne sur le site Web http://textmechanic.co/Sort-Text-Lines.html

2
Franck Dernoncourt

voici un code C # .NET pour cela, je viens d'écrire :)

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
Danpe

Voici un moyen non-codant:

  1. Téléchargez/installez la version d'essai gratuite de TextPad
  2. Ouvrez un tableur (Excel) et créez les numéros 1000 à 1500 dans la colonne "A" en mettant un "1000" dans la cellule A1, puis A1 + 1 dans la cellule A2, puis copiez-le dans A500.
  3. Ouvrez votre fichier texte dans TextPad
  4. Passez en "mode bloc" dans TextPad
  5. Collez la colonne A de la feuille de calcul dans TextPad (tout se retrouvera dans la marge de gauche en raison du mode bloc)
  6. Utiliser la fonction de tri TextPad, décroissant
  7. Utilisez le mode de blocage TextPad pour supprimer les numéros
0
Dale

Si vous souhaitez automatiser cela avec Notepad ++ en un seul clic:

  1. Obtenir ce script python plugin
  2. ajoutez le code ci-dessous et enregistrez-le en tant que fichier .py dans le dossier des scripts python (pour connaître l'emplacement de ce dossier, cliquez sur l'onglet plugins, puis sur Script Python et nouveaux scripts).

Toute la gloire à Reck Dickhard !

edit: pour l'ajouter dans le menu contextuel Si vous cliquez sur l'onglet plugins/Script Python/Configuration, vous pouvez affecter le script à une icône de barre d'outils ou au menu Script Python lui-même. (Si vous affectez un script au menu, il apparaîtra immédiatement, mais vous ne pourrez pas lui attribuer de raccourci avant le prochain démarrage de Notepad ++. Si vous l'assignez à une icône de la barre d'outils, il n'apparaîtra que sur le prochain démarrage de Notepad ++.)

0
JinSnow