625 votes

Suppression des lignes en double dans Notepad++.

Est-il possible de supprimer les lignes dupliquées dans Notepad++, en ne laissant qu'une seule occurrence d'une ligne ?

779voto

Colin Pickard Points 23922

Notepad++ peut le faire, à condition de vouloir trier par ligne, et de supprimer les lignes en double en même temps.

Vous aurez besoin du plugin TextFX. Il était inclus dans les anciennes versions de Notepad++, mais si vous disposez d'une version plus récente, vous pouvez l'ajouter à partir du menu en allant à l'adresse suivante Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install . Dans certains cas, il peut également être appelé TextFX Characters mais c'est la même chose.

Les cases à cocher et les boutons requis apparaissent maintenant dans le menu sous : TextFX -> TextFX Tools .

Assurez-vous que la case "trier les sorties uniquement les uniques..." est cochée. Ensuite, sélectionnez un bloc de texte ( Ctrl + A pour sélectionner l'ensemble du document). Enfin, cliquez sur "trier les lignes en tenant compte de la casse" ou "trier les lignes en tenant compte de la casse".

menu layout in n++

35 votes

Plugin incroyablement puissant, malgré son "âge". J'espère qu'ils ne le retireront JAMAIS de l'offre standard de plugins NPP. Le type qui a pensé à toutes les fonctionnalités de ce plugin était en quelque sorte un "visionnaire".

0 votes

Notez que cette méthode ne donne aucun avertissement si le fichier est en lecture seule. Mon fichier était trié de toute façon, il semblait donc que l'outil avait fonctionné, jusqu'à ce que je repère un doublon. C'était assez frustrant jusqu'à ce que j'essaie la méthode de recherche et de remplacement de @stema, qui m'a averti.

7 votes

Plus puissant qu'excel.

705voto

stema Points 36113

Depuis la version 6 de Notepad++ vous pouvez utiliser cette expression rationnelle dans le dialogue de recherche et de remplacement :

^(.*?)$\s+?^(?=.*^\1$)

et remplacer par rien . Cela permet de retirer de toutes les lignes dupliquées la dernière occurrence dans le fichier.

Aucun tri n'est nécessaire pour cela et les lignes en double peuvent se trouver n'importe où dans le fichier !

Vous devez vérifier les options "Regular expression" et ". matches newline" :

Notepad++ Replace dialogue

  • ^ correspond au début de la ligne.

  • (.*?) correspond à n'importe quel caractère 0 fois ou plus, mais aussi peu que possible (il correspond exactement à une ligne, ceci est nécessaire à cause de l'option ". correspond à une nouvelle ligne"). La ligne correspondante est stockée, à cause des parenthèses autour et accessible en utilisant \1

  • $ correspond à la fin de la ligne.

  • \s+?^ cette partie correspond à tous les caractères d'espacement (nouvelles lignes !) jusqu'au début de la ligne suivante ==> Cela supprime les nouvelles lignes après la ligne correspondante, de sorte qu'il n'y ait pas de ligne vide après le remplacement.

  • (?=.*^\1$) il s'agit d'une assertion à anticipation positive. C'est la partie importante de cette regex, une ligne n'est appariée (et supprimée) que lorsqu'il y a exactement la même ligne qui suit quelque part dans le fichier.

0 votes

Celle-ci est en effet meilleure que l'autre regex. Il n'est pas nécessaire de faire plusieurs passages pour éliminer tous les doublons.

11 votes

oh, celui-ci est génial, il supprime même les lignes vides, je suis en train de le macroser en ce moment même :)

0 votes

Excellent pour apprendre. Une explication précise également ! Merci à l'auteur de l'appel et à celui de la réponse !

99voto

Grant Peters Points 3718

si les lignes se suivent immédiatement, vous pouvez utiliser un remplacement regex.

Modèle de recherche : ^(.*\r?\n)\1

Remplacer par : \1

1 votes

Peut-être que d'autres ont eu de la chance avec ça, mais pour moi ^(.*) \n ) \1 Le résultat est "Impossible de trouver le texte".

4 votes

@b1naryatr0phy assurez-vous que le "Mode de recherche" est réglé sur "Expression régulière". J'ai également mis à jour le modèle pour qu'il puisse gérer les fins de ligne de style Windows.

3 votes

notepad++ a un moteur de regex léger, il ne permet pas de fonctions avancées, pas même le " ? ou". \r\n "car il ne fonctionne que sur une seule ligne et il faut utiliser $ pour l'opérateur. \r\n caractères

35voto

Pablo Santa Cruz Points 73944

Si vous ne vous souciez pas de l'ordre des lignes (ce que je ne pense pas que vous fassiez), alors vous pouvez utiliser une boîte Linux/FreeBSD/MacOSX/Cygwin et le faire :

$ cat yourfile | sort | uniq > yourfile_nodups

Ensuite, ouvrez à nouveau le fichier dans Notepad++.

3 votes

Ne fonctionne pas sur Windows 7. 'cat' is not recognized as an internal or external command, operable program or batch file.

2 votes

@Iain Elder : cat est un utilitaire Unix standard, c'est pourquoi cette réponse précise qu'il fonctionne sur linux, FreeBSD, et MacOSX. La réponse suggère également Cygwyn : C'est un programme Windows qui vous donne un shell de style Unix, et avec lui, cat. Pour faire court (trop tard !): Win 7 a besoin de Cygwin pour faire cela.

11 votes

Dans Windows, vous avez powershell : cat yourfile | sort -Unique

18voto

eeasterly Points 336

Les dernières versions de Notepad++ n'incluent apparemment pas du tout le plugin TextFX. Afin d'utiliser le plugin pour trier/éliminer les doublons, le plugin doit être téléchargé et installé (plus compliqué) ou ajouté en utilisant le gestionnaire de plugins.

A) Méthode simple (comme décrit ici ).

Plugins -> Gestionnaire de plugins -> Afficher le gestionnaire de plugins -> onglet Disponible -> Caractères TextFX -> Installer

B) Une méthode plus complexe, si une autre version est nécessaire ou si la méthode simple ne fonctionne pas.

  1. Téléchargez le plugin depuis SourceForge :

    http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip

  2. Ouvrez le fichier zip et extrayez-le NppTextFX.dll

  3. Lieu NppTextFX.dll dans le répertoire des plugins de Notepad++, par exemple :
    C:\Program Fichiers \Notepad ++ \plugins

  4. Démarrez Notepad++, et TextFX sera l'un des éléments du menu fichier (comme indiqué dans la réponse #1 ci-dessus par Colin Pickard).

Après avoir installé le plugin TextFX, suivez les instructions de la réponse n°1 pour trier et supprimer les doublons.

Pensez également à mettre en place un raccourci clavier en utilisant Paramètres > Mappeur de raccourcis si vous utilisez fréquemment cette commande ou si vous souhaitez reproduire un raccourci clavier, tel que F9 dans TextPad pour le tri.

0 votes

Dans notepad++ 7.6, le plug-in doit être ajouté à C:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppText‌​FX . Sinon, tout fonctionne bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X