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


95

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

Cela signifie-t-il que vous souhaitez décompter les nombres dans la marge de gauche ou que vous souhaitez inverser le contenu réel de votre fichier?
Maxpm

2
@Maxpm Contenu réel du fichier à inverser.
Danpe


Réponses:


102

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

6
Si TextFX n'est pas trouvé, allez à: Plugins »Gestionnaire de plugins» Afficher le gestionnaire de plugins »Cochez" Caractères TextFX ", cliquez sur Installer. Voir ici: textfx.no-ip.com/textfx
Kalpesh Panchal

-ce qui a fonctionné était "Trier les lignes sans
distinction de

@ Theta30: Je suppose que le texte de l'interface utilisateur a changé depuis la version que j'ai utilisée.
Gnubie

2
Pour ceux qui utilisent Eclipse, voyez cette réponse pour le faire encore plus simplement. (Je connais la question initiale posée pour Notepad ++, mais je pense que cela vaudrait la peine d'être ajouté pour ceux qui tombent dessus).
Steve Chambers

2
TextFX n'est pas un plugin pris en charge dans la version 64 bits.
Rhyous

34

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.

entrez la description de l'image ici

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

entrez la description de l'image ici

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

entrez la description de l'image ici


1
Cela fonctionne, mais il y a deux choses à prendre en compte: 1- Il insère un numéro supplémentaire pour la dernière ligne (vide), vous devez donc le supprimer avant le tri. 2- Si votre liste commence par des chiffres, vous risquez de gâcher les chiffres insérés avec vos numéros, car elle ne crée pas d'espace après les numéros insérés. Vous devez donc être prudent dans ce cas.
Francisco Alvarado

Impossible de reproduire l'étape 3. La nouvelle version a modifié le libellé et l'option
choisie

1
@TrevorYoung - Vous vous plaignez d'une image qui a été ajoutée par un autre utilisateur . Je viens de fixer le formatage de la réponse et d’approuver la modification. Si vous trouvez l'image inutile, puis supprimez-la, vous êtes l'auteur de la réponse. L'ajout de l'image est une modification acceptable (c'est-à-dire que la réponse est meilleure avec l'image que sans elle)
Ramhound

1
@Ramhound Mes excuses. En regardant l'historique des modifications, j'ai pensé que vous aviez ajouté l'image, mais ce n'est pas le cas. L'image ne me pose aucun problème, mais j'essayais de faire une suggestion à la personne qui a ajouté qu'il serait peut-être préférable que la suggestion donnée soit faite à la place.
Trevor Young

1
C'est bizarre mais ça marche ...
kayleeFrye_onDeck

6

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

Je suis sur Windows 7, où puis-je coller ce code? c'est vraiment intéressant.
Danpe

2
Ouvrez le menu de démarrage et tapez simplement Powershell. Double-cliquez sur "Windows Powershell". Cela ouvrira une invite de commande. Courez là-bas. Il y a aussi et IDE (bien qu'ils l'appellent ISE - Integrated Script Editor), mais je fais l'essentiel de mon travail à l'invite de commande et j'utilise GVim pour l'édition de script.
EBGreen le

Comment cela peut-il être intégré dans Notepad ++? (Le titre de la question est "Basculer ou inverser l'ordre des lignes dans le Bloc-notes ++" .)
Peter Mortensen Le

C'est pourquoi c'est un commentaire plutôt qu'une réponse. C'est un moyen alternatif d'accomplir ce que je pensais que l'utilisateur voulait, plutôt qu'une réponse à la question littérale.
EBGreen

5

Si vous êtes à l'aise pour compiler C ++, cela devrait faire l'affaire. Fondamentalement, je mets chaque ligne du fichier dans un vecteur et le renvoie 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;afin qu'il outFile << *rIt << "\r\n";soit ajouté (un saut de ligne est ajouté) (omettez-le \rsi vous êtes sous Unix / Linux).

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


Thanks man :) mais j'ai déjà utilisé mon code, mais cela peut être très utile pour les autres. Btw peut-être que je vais écrit un plugin Notepad ++ pour cela. quelle langue ils utilisent dans les plugins notepad ++?
Danpe

@Danpe La plupart des plugins Notepad ++ sont écrits en C ++, mais peuvent être étendus techniquement à tout autre langage capable de compiler un fichier .DLL (et avec les liaisons d'API appropriées).
Percée

Je pense donc que vous venez de créer un plugin :)
Danpe

Comment cela peut-il être intégré dans Notepad ++? (Le titre de la question est "Inverser l’ordre des lignes dans Notepad ++" .)
Peter Mortensen Le



1

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

Pourquoi avez-vous besoin du unsafemot clé Mainici?
Percée le

@ Break Je ne sais pas comment il est arrivé là: O lol fixé.
Danpe

1
Comment pouvons-nous l'intégrer dans Notepad ++?
Teoman shipahi

Comment cela peut-il être intégré dans Notepad ++? (Le titre de la question est "Basculer ou inverser l'ordre des lignes dans le Bloc-notes ++" .)
Peter Mortensen Le

0

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 nombres 1000 à 1500 dans la colonne "A" en mettant un "1000" dans la cellule A1, puis en plaçant 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 (tous se retrouveront 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

2
Eh bien, si vous comptez utiliser Excel de toute façon, copiez simplement le contenu du fichier à partir de n’importe quel éditeur, collez-le pour exceller. Remplissez série la prochaine colonne avec une série de nombres. Sélectionnez les deux colonnes et triez les colonnes par ordre décroissant. Copiez la colonne de texte et collez-la dans l'éditeur.
EBGreen le

@ EBGreen, vous avez raison. Je suis un idiot. Soyez juste prudent, car Excel modifiera vos données (problèmes de chiffres, de dates, etc.).
Dale

Comment cela peut-il être intégré dans Notepad ++? (Le titre de la question est "Basculer ou inverser l'ordre des lignes dans le Bloc-notes ++" .)
Peter Mortensen Le

@PeterMortensen, la question initiale disait "Si ce n'est pas disponible dans Notepad ++, alors d'autres logiciels devraient être bons aussi :)"
Dale

0

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

  1. Obtenir ce plugin de script Python
  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 !

Pour l'ajouter dans le menu contextuel:

Si vous cliquez sur l'onglet Plugins → Script PythonConfiguration , 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 ++.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.