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
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? )
Control+F
Basculer "Mode de remplacement"
Basculer "Utiliser une expression régulière" (l'icône avec le symbole .*
)
Dans le champ search, tapez ^(.*)(\n\1)+$
Dans le champ "remplacer par", tapez $1
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.
Voici une extension très intéressante: Transformer
Caractéristiques:
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!).
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.
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.
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.
Installer DupChecker extension, appuyez sur F1, tapez "Vérifier les doublons".
Il vérifiera les dupes et vous demandera si vous souhaitez les supprimer.