Comment puis-je trier un fichier texte par longueur de ligne dans notepad ++? Existe-t-il un plugin disponible pour la tâche mentionnée?
Dans le cas où il n'y a pas de plugin, quel est le premier et peut-être le deuxième tutoriel à lire, afin d'écrire le plugin moi-même?
13
Réponses:
Cette réponse est inspirée d'une vidéo YouTube . Mis à jour pour conserver l'ordre de tri d'origine, si cela est important.
Notepad ++ possède un outil TextFX intégré qui trie les lignes sélectionnées par ordre alphabétique. Cet outil peut être détourné pour trier selon la longueur des lignes en plaçant des espaces à gauche de chaque ligne et en s'assurant que toutes les lignes sont de la même longueur.
"Le zoo" vient alphabétiquement avant "leur maison" car l'espace est traité comme un personnage et précède "i".
__X
(prétendre que les traits de soulignement sont vraiment des espaces) viendra de même par ordre alphabétique auparavant_XX
. L'idée dans cette réponse est d'ajouter des espaces et des numéros de ligne afin qu'ils__________092dog
soient triés ci-dessus_003alligator
.Je vais utiliser les données suivantes comme exemple:
Étape 1. Ajoutez des numéros de ligne.
(Note ajoutée par barlop - une note pour le lecteur concernant cette étape, nous ne trierons pas en fonction de ces numéros de ligne, nous trierons en fonction de la longueur des lignes. Mais la raison de l'ajout des numéros de ligne est que nous connaître l'ordre naturel, de sorte que lorsque, par exemple, deux lignes + sont de longueur égale, nous pouvons trier ces lignes selon cet ordre naturel)
En supposant que votre fichier texte ne contient que des données, placez le curseur de texte (la ligne verticale) à la toute première position du fichier. Ensuite, dans le
Edit
menu, sélectionnezColumn Editor...
( Alt+ C). Choisissez "Nombre à insérer" et commencez par 1, augmentez de 1 et incluez des zéros non significatifs. Notez que cela conservera l'ordre d'origine lors du tri de la chaîne la plus courte à la chaîne la plus longue. Inversez d'abord toutes les lignes si vous souhaitez trier du plus long au plus court.Étape 2. Remplissez toutes les lignes avec des espaces de début.
Placez le curseur de texte (la ligne verticale) à la toute première position du fichier. Puis dans le
Edit
menu sélectionnezColumn Editor...
( Alt+ C). Insérez suffisamment d'espaces pour que la ligne de données la plus courte soit complétée jusqu'à la longueur de la ligne de données la plus longue. Si votre ligne la plus courte comporte 4 caractères et votre plus longue 44, assurez-vous d'insérer au moins 40 espaces.Étape 3. Coupez les lignes à une longueur uniforme.
Utilisez la recherche / remplacement d'expressions régulières suivante (Ctrl + H) suivante pour faire correspondre les caractères de droite égalant ou dépassant la longueur de votre ligne de données la plus longue.
Remplacer tout par
$1
. Cela supprimera tout sauf les 50 caractères les plus à droite de chaque ligne. Si vos données sont plus longues (ou courtes) que 50, ajustez le{50}
dans l'expression régulière.(Note ajoutée par barlop - l'idée ici est que les lignes les plus courtes ont le plus d'espaces au début )
Étape 4. Triez les lignes.
Sélectionnez tout le texte ( Ctrl+ A). Via le menu TextFX, allez à
Text FX > TextFX Tools > Sort lines case sensitive (at column)
. Vos données doivent maintenant être classées par ordre de longueur, du plus court au plus long. Si vous souhaitez lesText FX > TextFX Tools > + Sort ascending
classer du plus long au plus court, décochez l' option avant de trier. Notez également comment les numéros de ligne sont inversés.Étape 5. Supprimez les espaces de tête.
Utilisez une autre recherche / remplacement d'expression régulière ( Ctrl+ H) pour faire correspondre les espaces de tête.
C'est un espace entre le curseur et l'astérisque. Remplacez tout par rien. Cela supprimera tous les espaces de tête et les numéros de ligne insérés, si vous aviez des numéros de ligne à 4 chiffres. Remplacez le
{4}
par le nombre correct de chiffres dans vos numéros de ligne.MACRO
J'ai enregistré les étapes ci-dessus en utilisant la fonction macro de Notepad ++, et cela ne fonctionne pas. Je ne sais pas quelle étape échoue, mais je n'ai pas diagnostiqué pourquoi. Vous pourriez probablement utiliser AutoHotKey pour automatiser cela si vous le faites à plusieurs reprises.
la source
^ *\d{5}
ou n'importe quel nombre de chiffres ont été utilisés pour les numéros de ligne.Non, je ne pense pas. Le plus proche est le plugin TextFx mais c'est un tri basé sur les caractères et non sur la longueur des lignes. Votre meilleur pari est de jeter le texte dans une feuille de calcul et de le trier là-bas (en utilisant une colonne calculée distincte en utilisant la
LEN()
fonction).la source
Vous pouvez utiliser SQL en N ++ dans des fichiers CSV! Par exemple si vous avez:
, vous pouvez exécuter la commande
select * from data order by length(col1) desc
pour trier par ordre décroissant. "données" signifie le fichier actuel. "col1" - nom de la première (et dernière) colonne.Malheureusement, il y a probablement un bogue qui ne permet pas d'abandonner le délimiteur après les lignes dans le texte à une colonne.
la source
Ou si vous avez Linux et Nedit:
la source