Question Retourner ou inverser l'ordre des lignes dans Notepad ++


Je veux retourner des commandes de ligne d'un document avec plus de 500 lignes. Les lignes ne sont pas simplement des nombres, 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

82
2017-09-02 12:19


origine


Ce qui signifie que vous voulez que les chiffres de la marge de gauche soient décomptés ou que vous souhaitiez que le contenu réel de votre fichier soit inversé? - Maxpm
@Maxpm Contenu réel du fichier à inverser. - Danpe
duplicata possible de Ordre de ligne inverse dans Notepad ++ - Franck Dernoncourt


Réponses:


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

  1. Modifier> Sélectionner tout
  2. TextFX> Outils TextFX> Insérer des numéros de ligne
  3. Si TextFX> Outils TextFX> + Tri croissant est coché, décochez-le
  4. TextFX> Outils TextFX> Trier les lignes en respectant la casse (dans la colonne)
  5. TextFX> Outils TextFX> Supprimer les numéros de ligne ou le premier mot

88
2018-02-21 12:07



Si TextFX n'est pas trouvé, allez dans: Plug-ins »Gestionnaire de plug-ins» Afficher le gestionnaire de plug-ins »Cochez« Caractères TextFX », cliquez sur Installer. Vois ici: textfx.no-ip.com/textfx - Kalpesh Panchal
-Quel a été le travail "Trier les lignes insensible à la casse" dans la partie 4) - Theta30
@ Theta30: Je suppose que le texte de l'interface utilisateur a changé depuis la version que j'ai utilisée. - Gnubie
Pour ceux qui utilisent Eclipse, voir cette réponse pour le faire encore plus simplement. (Je sais que la question initiale demandait Notepad ++ mais pensait que cela valait la peine d’être ajouté pour ceux qui ont trébuché à ce propos). - Steve Chambers
@SteveChambers more simply est un euphémisme. Vous pouvez mettre en évidence les lignes désirées et les inverser en deux clics de souris. Merci beaucoup de l'avoir signalé Steve, cela m'a facilité la vie aujourd'hui. - b1nary.atr0phy


Cela peut également être fait dans Notepad ++ sans le plug-in TextFX. Il suit la même stratégie que celle de la réponse acceptée, mais en utilisant des fonctionnalités natives. Cela se fait comme suit:

  1. Modifier> Sélectionner tout
  2. Edition> Editeur de colonne ...> Sélectionner le numéro à insérer> Définir le nombre initial sur 1> Définir l'augmentation de 1> Vérifier les zéros en tête> Cliquez sur OK

enter image description here

  1. Modifier> Opérations sur les lignes> Trier les lignes dans l'ordre décroissant Modifier: Une mise à jour récente a ajouté des options de tri supplémentaires, l'option: Trier les lignes en ordre décroissant semble faire le travail.

enter image description here

  1. Supprimez les numéros de ligne par le biais d'une sélection de boîte (Alt + Clic gauche ou Glisser + Alt + Maj) ou Rechercher / Remplacer

enter image description here


19
2018-04-08 19:08



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 nombres, vous pourriez gâcher les numéros insérés avec vos numéros, car elle n’insère pas d’espace après les numéros insérés, vous devez donc faire attention dans ce cas. - Francisco Alvarado
Impossible de reproduire l'étape 3. La nouvelle version a changé le libellé, et quelle que soit l'option ne fonctionne pas pour moi - Ooker
@Ooker J'ai mis à jour l'étape 3. Dites-moi si cela fonctionne. - Trevor Young
@TrevorYoung - Vous vous plaignez d'une image ajoutée par une autre utilisateur.  J'ai juste corrigé le formatage de la réponse et approuvé l'édition. Si vous trouvez l'image inutile, 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
@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. Je n'ai aucun problème avec l'image, mais j'essayais de donner une suggestion à la personne qui a ajouté que cela pourrait être mieux si la suggestion donnée était faite à la place. - Trevor Young


Eh bien, puisque nous donnons des exemples de code, si vous êtes sur 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 codée, téléchargez GVim, ouvrez le fichier et tapez:

:g/^/m0

6
2017-09-02 13:32



Je suis sur Windows 7, Où puis-je coller ce code? c'est vraiment intéressant. - Danpe
Ouvrez le menu Démarrer et tapez simplement Powershell. Double-cliquez sur "Windows Powershell". Il va ouvrir une invite de commande. Exécutez-le là-bas. Il y a aussi et IDE (bien qu'ils l'appellent ISE - Integrated Script Editor), mais je fais la plupart de mon travail à l'invite de commande et j'utilise GVim pour l'édition de script. - 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 le renvoie à 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 de sauts de ligne entre les lignes, changez le outFile << *rIt; être outFile << *rIt << "\r\n"; donc un saut de ligne est ajouté (omettre le \r si vous êtes sur Unix / Linux).

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


5
2017-09-02 13:11



Merci mec :) mais j'ai déjà utilisé mon code, mais cela peut être très utile pour les autres. Btw peut-être que je vais écrire 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 techniquement, ils peuvent être étendus à tout autre langage capable de compiler un fichier .DLL (et avec les liaisons API appropriées). - Breakthrough
Donc je pense que vous venez de créer un plugin :) - Danpe


Utilisez l'outil en ligne disponible en un clic

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


4
2017-12-12 08:25





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


2
2018-02-28 15:51



Le site est cassé cependant, il semble qu'il soit passé à textmechanic.co/Sort-Text-Lines.html - Shogo Makishima
@georgechalhoub Merci, j'ai mis à jour la réponse. - Franck Dernoncourt


voici un code C # .NET que 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
2017-09-02 13:15



Pourquoi avez-vous besoin de la unsafe mot clé sur Main ici? - Breakthrough
@Break Je ne sais pas comment c'est arrivé: O lol corrigé. - Danpe
Comment pouvons-nous intégrer ceci dans notepad ++? - Teoman shipahi


Voici une manière non codante:

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

0
2017-09-02 14:32



Eh bien, si vous voulez utiliser Excel de toute façon, copiez simplement le contenu du fichier depuis n'importe quel éditeur, collez-le pour Excel. Remplissez la série suivante avec une série de chiffres. Sélectionnez les deux colonnes et triez par ordre décroissant sur la colonne numérique. Copiez la colonne de texte et collez-la dans l'éditeur. - EBGreen
@EBGreen, vous avez raison. Je suis un idiot. Vous devez juste faire attention car Excel changera vos données (désordre avec les nombres, les dates et autres). - Dale


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

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

Toute la gloire à Reck Dickhard!

edit: pour l'ajouter dans le menu contextuel Si vous cliquez sur l'onglet Plugins / Python Script / 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’affectez à une icône de barre d’outils, il apparaîtra uniquement sur le prochain démarrage de Notepad ++.)


0
2018-02-10 11:59