Si l'ordre des lignes n'est pas important
Triez les lignes par ordre alphabétique, si elles ne le sont pas déjà, et procédez comme suit:
(sur la base de cette question connexe: Comment rechercher et supprimer les lignes en double d'un fichier à l'aide d'expressions régulières? )
Control+F
Basculer en "mode Remplacer"
Basculer "Utiliser l'expression régulière" (l'icône avec le .*
symbole)
Dans le champ de recherche , saisissez^(.*)(\n\1)+$
Dans le champ " remplacer par ", saisissez$1
Cliquez sur («Tout remplacer»).
Si l'ordre des lignes est important et que vous ne pouvez pas trier
Dans ce cas, soit recourir à une solution en dehors de VS Code (voir ici ), soit - si votre document n'est pas très volumineux 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-les:
(basé sur Supprimer des lignes en double spécifiques sans trier )
Attention: Blocs pour les fichiers avec trop de lignes (1000+); peut provoquer le blocage de VS Code; peut introduire des lignes vides dans certains cas.
puis cliquez sur le bouton "Tout remplacer" autant de fois qu'il y a des occurrences en double .
Vous saurez que c'est suffisant lorsque le nombre de lignes cesse de diminuer lorsque vous cliquez sur le bouton. Accédez à la dernière ligne du document pour garder un œil sur cela.
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
fait mon crash vscode .... J'ai fait une recherche dans un fichier 229 lignes. :(^(.*)(\n\1)+$
. Après avoir supprimé les lignes en double, je veux regarder toutes les lignes avec la première colonne en double dans le csv et je veux modifier l'expression régulière.\r?
bit de l'autre réponse n'est pas vraiment nécessaire.Voici une extension très intéressante: Transformer
Fonctionnalités:
Pour supprimer les lignes en double:
Supprime les lignes en double du document
Fonctionne sur sélection ou bloc courant si aucune sélection
Je n'ai pas beaucoup joué avec la commande "Unique Lines", mais cela semble assez bien fait (y compris essayer un enregistreur de macro!).
la source
A ajouter à la réponse de @ Marc.2377.
Si l'ordre est important et que vous ne vous souciez pas de ne conserver que la dernière des lignes dupliquées, recherchez simplement l'expression rationnelle suivante si vous souhaitez supprimer uniquement les lignes non vides dupliquées
Si vous souhaitez également supprimer les lignes vides en double, utilisez à la
*
place de+
et remplacer par rien.
Cela prendra une ligne et essaiera 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.
la source
^(.+\n)(?=(?:.*\n)*?\1)
place parce que votre regex a supprimé une ligne vide là où elle n'était pas attendue. J'ai quand même voté.xxx(?=…)
est un match anticipé. Il s'assure donc que tout ce qui suit "xxx" correspond à "…", mais ne fait pas avancer la recherche.(?:…)
est juste une parenthèse qui ne compte pas dans le nombre de parenthèses..*\n
est un motif pour une ligne (éventuellement vide).*
signifie qu'il peut y avoir plusieurs lignes, voire aucune. L'?
après astérisque (*
) signifie que nous voulons le moins de lignes possible. Comme\1
suit cette expression, l'effet est que nous recherchons toutes les lignes qui ne correspondent pas\1
jusqu'à ce que nous trouvions une ligne correspondant\1
. J'espère que cela le rend clair.J'ai juste eu le même problème et j'ai trouvé le package Visual Studio Code "Sort lines". Consultez la place de marché Visual Studio Code pour plus de détails (par exemple, Trier les lignes ).
Ce package a l'option "Tri des lignes (uniques)", qui l'a fait pour moi. Faites attention aux espaces blancs au début / à la fin des lignes. Ils déterminent si les lignes sont considérées comme uniques ou non.
la source
Installez l' extension DupChecker , appuyez sur F1et tapez "Vérifier les doublons".
Il recherchera les doublons et vous demandera si vous souhaitez les supprimer.
la source
Essayez de rechercher et de remplacer par une expression régulière .
Trouver:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Remplacer:
$1$2
Il est possible d'introduire une certaine variance dans le premier groupe.
la source
Pas réellement dans Visual Studio Code, mais si cela fonctionne, cela fonctionne.
Ce n'est pas la meilleure réponse, comme vous l'avez spécifié Visual Studio Code, mais comme je l'ai dit: si cela fonctionne, cela fonctionne :)
la source