Utilisation de Notepad++ v6.6.8 avec TextFX.
Comment trier les lignes dans l'ordre numérique plutôt qu'alphanumérique?
C'est-à-dire que je veux que les lignes soient triées comme suit:
1
2
10
11
15
20
pas:
1
10
11
15
2
20
Utilisation de Notepad++ v6.6.8 avec TextFX.
Comment trier les lignes dans l'ordre numérique plutôt qu'alphanumérique?
C'est-à-dire que je veux que les lignes soient triées comme suit:
1
2
10
11
15
20
pas:
1
10
11
15
2
20
C'est maintenant facile à réaliser (du moins dans Notepad ++ 7.5.9) :
Utilisez l'élément de menu : Édition -> Opérations de ligne -> Trier les lignes comme entiers croissants
(Remarque : si vous ne sélectionnez aucun texte, il triera le fichier entier, et si vous sélectionnez du texte, il limitera le tri au texte sélectionné.)
Je ne sais pas à quoi ressemble votre fichier, mais j'utiliserais des expressions régulières pour ajouter des espaces ou des zéros avant chaque nombre afin qu'ils aient la même longueur (par exemple, 2 devient 002). Ensuite, ils se classeront correctement et vous pourrez utiliser une autre substitution pour supprimer les espaces/zéros en tête par la suite.
Voici les étapes (fonctionne pour les nombres jusqu'à 10 caractères)
Rechercher : ^
Remplacer : 0000000000
Rechercher : \d*(\d{10})
Remplacer : \1
Classer
Rechercher : ^0*
Remplacer :
Cela fonctionne en ajoutant 10 zéros avant le nombre, même si c'est probablement trop. La deuxième substitution prend ensuite les 10 derniers chiffres du nombre pour ramener tout à la même longueur, vous donnant des nombres comme 0000000839, 0000000003, etc. Ceux-ci se classeront dans l'ordre que vous voulez. Une fois classés, la dernière expression supprimera tous les zéros en tête pour que vous retrouviez vos nombres d'origine.
Si vous avez besoin de nombres plus longs, il suffit d'ajouter plus de zéros à la première substitution, et d'augmenter le 10 dans la seconde substitution en conséquence. Si vous devez faire cela plus souvent, vous pouvez enregistrer une macro avec ces étapes.
Je n'ai pas essayé cela mais il y a un plugin qui prétend le faire (à condition que les lignes COMMENCENT par un nombre). Voici le lien: http://www.scout-soft.com/linesort/
Mise à jour Ok, ce plugin semble être disparu pour le moment. Peut-être qu'il ne fonctionne pas avec les nouvelles versions de NP++. Voici un autre que j'ai vu dans le gestionnaire de plugins donc il est au moins plus commun: http://william.famille-blum.org/blog/index.php?entry=entry110123-113226
Je viens de l'essayer sur 6.6.9 et c'est un peu maladroit (n'oubliez pas d'appuyer sur le bouton Ajouter dans la boîte de dialogue) mais cela fonctionne parfaitement bien.
Sélectionnez tout et copiez comme texte vers Excel ou tout autre programme de tableur, utilisez un tri personnalisé. Chaque ligne devrait coller comme une seule cellule, A1, B1, etc. Il suffit de définir le champ comme numérique et non texte. Cela se fait en définissant le format de la cellule ou en utilisant la fonction TEXTE. Collez de nouveau dans notepad++.
Dans le cas plus complexe où l'utilisateur a du texte mélangé avec des nombres (par exemple, "1 Première ligne," "12 Douzième ligne"), nous pouvons créer une colonne de tri pour organiser la liste. Comme il y a un espace après le nombre, nous pouvons trouver cet espace pour créer une colonne avec seulement les nombres en utilisant =GAUCHE(A1;TROUVE(" ";A1;1)). Après avoir étendu la fonction à toute la colonne, nous pouvons trier les deux colonnes en fonction de l'ordre de la colonne de tri (c'est-à-dire l'ordre numérique) et ensuite copier la première colonne dans le bon ordre. La formule exacte pour extraire le numéro de ligne dépendra du format de la ligne, mais la commande ci-dessus devrait fonctionner avec une légère modification pour la plupart des cas, sinon stack exchange a d'autres exemples de formules similaires.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.