259 votes

Comment puis-je supprimer les lignes en double dans Visual Studio Code?

Dites que vous avez le texte suivant:

abc
123
abc
456
789
abc
abc

Je veux supprimer toutes les lignes "abc" et en garder une seule. L'ordre m'importe peu. Le résultat devrait ressembler à ceci:

abc
123
456
789

0 votes

Younes, tu ferais mieux de revenir et d'accepter la réponse de @Marc.2377. C'est un génie.

418voto

Marc.2377 Points 1530

Si l'ordre des lignes n’est pas important

Triez les lignes par ordre alphabétique, si ce n'est pas déjà fait, et suivez ces étapes:
(basé sur cette question connexe: <a href="https://stackoverflow.com/q/1573361/3258851">Comment trouver et supprimer des lignes en double dans un fichier en utilisant des expressions régulières?</a>)

  1. Ctrl+F

  2. Activer le "mode Remplacer"

  3. Activer "Utiliser les expressions régulières" (l'icône avec le symbole *`.`**)

  4. Dans le champ de recherche, taper ^(.*)(\n\1)+$

  5. Dans le champ "remplacer par", taper $1

  6. Cliquez sur le bouton Remplacer tout ("Remplacer tout").

Si l'ordre des lignes est important donc vous ne pouvez pas les trier

Dans ce cas, recourez à une solution en dehors de VS Code (voir ici), ou - si votre document n'est pas très grand et que cela ne vous dérange pas de spammer le bouton Remplacer tout - suivez les étapes précédentes, mais aux étapes 4 et 5, entrez ceci:
(basé sur <a href="https://stackoverflow.com/q/48722064/3258851">Supprimer des lignes en double spécifiques sans trier</a>)

Attention: Les blocs de fichiers avec trop de lignes (1000+); peuvent faire crasher VS Code; peuvent introduire des lignes vides dans certains cas.

  • recherche: ((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?

  • remplacer par: $1

et ensuite cliquez sur le bouton "Remplacer tout" autant de fois qu'il y a d'occurrences en double.

Vous saurez que c'est suffisant lorsque le nombre de lignes cesse de diminuer lorsque vous cliquez sur le bouton. Naviguez jusqu'à la dernière ligne du document pour surveiller cela.

17 votes

((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)? a fait planter mon vscode.... J'ai fait une recherche dans un fichier de 229 lignes. :(

1 votes

@Hickory420 J'ai testé sur ma machine avec 1000 lignes (de 20 caractères de long, aléatoires) et je n'ai pas eu de plantage, mais en effet, un fil d'exécution se bloque avec une charge CPU de 100 % pendant quelques secondes à chaque passage. Oui, c'est à peine pratique pour les gros fichiers.

0 votes

Merci pour cela. Pouvez-vous s'il vous plaît expliquer la regex ^(.*)(\n\1)+$. Après avoir supprimé les lignes en double, je souhaite examiner toutes les lignes avec la première colonne en double dans le csv et je veux modifier la regex.

290voto

Mark Points 8757

À partir de Visual Studio Code 1.62 (publié en octobre 2021), il existe une nouvelle commande Supprimer les lignes en double. Il supprime les lignes en double dans une sélection ou dans tout le document.

Il n'y a pas de raccourci clavier par défaut pour cette commande. Si vous souhaitez en définir un, le nom de la commande est editor.action.removeDuplicateLines.

Supprimer les lignes en double


Voici une extension très intéressante : Transformer

Fonctionnalités :

  • Lignes uniques en tant que nouveau document

  • Lignes uniques

  • Aligner les CSV

  • Aligner sur le curseur

  • CSV compact

  • Copier dans un nouveau document

  • Compter les lignes en double en tant que nouveau document

  • Encoder / Décoder

  • Filtrer les lignes en tant que nouveau document

  • Filtrer les lignes

  • Joindre les lignes

  • Chaîne JSON comme texte

  • Lignes en tant qu'array de chaînes JSON

  • Normaliser les marques diacritiques

  • Mélanger les lignes

  • Mélanger les sélections

  • Inverser les lignes

  • Inverser les sélections

  • Faire tourner les sélections vers l'arrière

  • Faire tourner les sélections vers l'avant

  • Sélectionner les points forts

  • Sélectionner les lignes

  • Sélection en tant que chaîne JSON

  • Trier les lignes par longueur

  • Trier les lignes

  • Trier les sélections

  • Séparer les lignes après

  • Séparer les lignes avant

  • Séparer les lignes

  • Tronquer les lignes

  • Tronquer les sélections

Lignes uniques

Supprime les lignes en double du document. Fonctionne sur une sélection ou sur le bloc actuel s'il n'y a pas de sélection

Lignes uniques en tant que nouveau document

Les lignes uniques sont ouvertes dans un nouveau document. Fonctionne sur une sélection ou sur le bloc actuel s'il n'y a pas de sélection

Je n'ai pas beaucoup joué avec elle mise à part la commande "Lignes uniques", mais elle semble très bien faite (y compris avec une tentative d'enregistreur de macro !).

1 votes

@ArenCambre Je vois Supprimer les lignes en double : editor.action.removeDuplicateLines dans les raccourcis clavier. Ils ont oublié de faire ce qu'ils doivent faire pour le mettre dans la Palette de commandes ou un régression mais il est là dans les raccourcis clavier et peut être transformé en une combinaison de touches comme d'habitude. As-tu vérifié les raccourcis clavier ?

0 votes

Mentionné dans les notes de publication de la version 1.62 : code.visualstudio.com/updates/v1_62.

0 votes

C'est là. Désolé. J'ai effacé mon commentaire original pour éviter toute confusion.

33voto

SimonAx Points 557

Je viens de rencontrer le même problème et j'ai trouvé le package "Sort lines" pour Visual Studio Code. Consultez le marché Visual Studio Code pour plus de détails (par exemple, Sort lines).

Ce package offre l'option "Tri des lignes (uniques)", qui a résolu le problème pour moi. Veillez à supprimer les espaces blancs au début/à la fin des lignes. Ils influencent la considération des lignes comme étant uniques ou non.

2 votes

marketplace.visualstudio.com/… devrait également fonctionner.

1 votes

Il semble que l'extension n'ait plus la capacité de supprimer les entrées en double. En la combinant avec la réponse de @Marc-2377 semble faire l'affaire pour moi.

27voto

perfecto25 Points 82

Installez l'extension DupChecker, appuyez sur F1, et tapez "Vérifier les doublons".

Il vérifiera les doublons et vous demandera si vous souhaitez les supprimer.

22voto

Lavock Points 71

Essayez de trouver et de remplacer avec une expression régulière.

  • Find: ^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$

  • Remplacer: $1$2

Il est possible d'introduire une certaine variabilité dans le premier groupe.

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