web-dev-qa-db-fra.com

Comment supprimer les lignes en double dans Visual Studio Code?

Disons que vous avez le texte suivant:

abc
123
abc
456
789
abc
abc

Je veux supprimer toutes les lignes "abc" et n'en garder qu'une. Cela ne me dérange pas de trier. Le résultat devrait être comme ceci:

abc
123
456
789
72
Younes

Si l'ordre des lignes n'est pas important

Triez les lignes par ordre alphabétique, si ce n'est déjà fait, et procédez comme suit:
(Basé sur cette question connexe: Comment trouver et supprimer des lignes en double d'un fichier à l'aide d'expressions régulières? )

  1. Control+F

  2. Basculer "Mode de remplacement"

  3. Basculer "Utiliser une expression régulière" (l'icône avec le symbole .*)

  4. Dans le champ search, tapez ^(.*)(\n\1)+$

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

  6. Cliquez sur the Replace All button ("Remplacer tout").

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

Dans ce cas, vous pouvez soit recourir à une solution en dehors de VS Code (voir ici ), soit si le document n'est pas très volumineux et que le fait de spammer le bouton Remplacer tout ne vous dérange pas, suivez les étapes précédentes. mais aux étapes 4 et 5, entrez ces informations:
(basé sur supprimer des lignes en double spécifiques sans trier )

Attention: Bloque les fichiers contenant trop de lignes (plus de 1000); peut provoquer un blocage de VS Code; peut introduire des lignes vides dans certains cas.

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

  • remplacer par: $1

puis cliquez sur le bouton "Remplacer tout" autant de fois qu'il y a de doublons.

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 garder un œil sur cela.

146
Marc.2377

Voici une extension très intéressante: Transformer

Caractéristiques:

  • Lignes uniques
  • Lignes uniques comme nouveau document
  • Filtrer les lignes
  • Filtrer les lignes en tant que nouveau document
  • Lignes de tri
  • Trier les lignes par longueur
  • Aligner sur le curseur
  • Aligner CSV
  • CSV compact
  • Copier dans un nouveau document
  • Sélectionnez des lignes
  • Lignes comme JSON
  • Lignes de coupe
  • Compter les doublons en tant que nouveau document
  • Les macros

Pour supprimer les lignes en double:

  • Supprime les lignes en double du document

  • Fonctionne sur la sélection ou le bloc actuel si aucune sélection

Je n'ai pas beaucoup joué avec elle à part la commande "Lignes uniques" mais cela semble assez bien fait (y compris essayer un enregistreur de macros!).

28
Mark

Vient juste le même problème et a trouvé le paquet VSCode "Lignes de tri", voir le marché VSCode pour plus de détails (par exemple https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines ).

Ce paquet a l'option "lignes de tri (unique)", qui l'a fait pour moi. Prenez soin des espaces blancs au début/à la fin des lignes, ils déterminent si les lignes sont considérées comme uniques ou non.

19
SimonAx

Essayez de trouver et remplacer avec regexp.

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

  • Remplacez: $1$2

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

9
Lavock

Pour ajouter à la réponse de @ Marc.2377.

Si la commande est importante et que vous ne vous souciez pas de garder la dernière des lignes en double, recherchez simplement l'expression rationnelle.

^(.*\n)(?=(?:.*\n)*?\1)

et remplacer avec rien.

Cela prendra une ligne et essayera de trouver quelques lignes supplémentaires (peut-être 0) suivies de la même ligne prise. Cela supprimera la ligne prise.

Ceci est juste une regex one-shot. Pas besoin de spammer le bouton de remplacement.

9
Skeeve

Installer DupChecker extension, appuyez sur F1, tapez "Vérifier les doublons".

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

6
perfecto25