0
Words
0
Characters
0
No spaces
0
Lines
0
Paragraphs
0
Sentences
0 min
Reading time
Lines with duplicates
Deduped output

Supprimer les lignes en double : dédupliquer du texte en ligne

Collez n'importe quelle liste, retirez les doublons exacts, conservez l'ordre ou triez le résultat. Options pour la casse et les espaces incluses.

Ce que fait cet outil

Un utilitaire gratuit qui tourne dans le navigateur pour supprimer les lignes en double d'un bloc de texte. Collez votre saisie, choisissez de conserver l'ordre original ou de trier la sortie, et les doublons disparaissent. Rien ne quitte votre machine.

C'est l'équivalent graphique de sort -u en ligne de commande, ou de awk '!seen[$0]++' quand vous voulez garder la première occurrence dans l'ordre original. Si vous avez déjà collé un export d'e-mails de 4 000 lignes dans un terminal juste pour lancer sort | uniq, c'est la même chose sans le terminal.

La déduplication est exacte et ligne par ligne. Deux lignes doivent correspondre caractère par caractère (selon vos options de casse et de découpe) pour compter comme doublons. La correspondance floue, la détection de quasi-doublons et le score de similarité sont délibérément hors sujet. Autre problème, autre outil.

Comment la déduplication fonctionne ici

En interne, l'outil parcourt chaque ligne une fois et garde trace des valeurs vues dans un ensemble basé sur un hash, la même structure de données que le Set JavaScript ou le set Python. Les recherches sont en O(1) en moyenne, donc un million de lignes passent en moins d'une seconde sur un portable normal. L'algorithme sous-jacent est l'appartenance à une hash table.

Deux modes. Conserver l'ordre garde la première occurrence de chaque ligne et supprime chaque doublon ultérieur, à la manière de awk '!seen[$0]++'. Trier et dédupliquer trie d'abord toute l'entrée alphabétiquement et émet chaque ligne unique une fois, à la manière de sort -u. Choisissez ce qu'attend votre consommateur en aval.

Il y a des options pour la comparaison elle-même. Insensible à la casse traite [email protected] et [email protected] comme la même ligne. Couper les espaces retire les espaces et tabulations en début et fin avant comparaison, donc " example", "example " et "example" se réduisent à une seule entrée. Les deux sont désactivées par défaut, parce que le comportement sûr est de correspondre exactement à ce qui a été tapé.

Comment supprimer les lignes en double en trois étapes

Un panneau d'entrée, un panneau de sortie. Rien n'est envoyé.

  1. 1

    Collez vos lignes

    Déposez le texte dans le panneau d'entrée. Toute liste fonctionne : e-mails, IP, URL, SKU, horodatages de logs, noms de paquets, n'importe quoi à raison d'un par ligne. Cliquez sur Sample pour charger un exemple avec doublons intentionnels si vous voulez voir le résultat d'abord.

  2. 2

    Choisissez vos options

    Choisissez Conserver l'ordre (garde la première occurrence, comme awk '!seen[$0]++') ou Trier et dédupliquer (alphabétique, comme sort -u). Activez Insensible à la casse si Alice et alice doivent fusionner, et Couper les espaces si les espaces en début ou fin doivent être ignorés.

  3. 3

    Copiez ou téléchargez le résultat

    Le panneau de droite affiche la sortie dédupliquée et un compteur du nombre de lignes supprimées. Cliquez sur Copy pour la récupérer, ou sur Download pour la sauvegarder en fichier .txt. Les deux panneaux défilent indépendamment, ce qui permet de repérer quelles lignes ont disparu.

Quand vous voudrez cet outil

Nettoyer une liste d'e-mails marketing avant import

Exportez votre liste d'un CRM, ajoutez celle d'une inscription à un webinaire, collez les deux dans l'outil, dédupliquez avec Insensible à la casse et Couper les espaces activés. Mailchimp et HubSpot rejettent de toute façon les adresses en double à l'import, mais ils rejettent tout le lot au lieu des seuls doublons, donc faire ça avant évite un nouveau téléversement.

Dédupliquer les adresses IP dans un journal d'audit

Tirez les IP source d'une semaine de auth.log avec awk, collez-les, dédupliquez en mode conserver l'ordre. Vous obtenez une liste propre d'attaquants uniques sans perdre le signal chronologique approximatif de "qui s'est pointé en premier". Injectez ça dans la liste de blocage de votre pare-feu.

Nettoyer une liste d'URL extraites de plusieurs pages

Scraper un sitemap et un index paginé renverra la même URL plusieurs fois. Déposez la liste combinée, triez et dédupliquez, et vous avez une frontière de crawl canonique. Les barres obliques finales et les query strings comptent toujours comme des lignes distinctes, donc normalisez-les d'abord si vous voulez les fusionner.

Réduire le bruit de pip freeze ou npm ls à des paquets uniques

pip freeze sur deux virtualenvs, ou npm ls --all sur un monorepo, imprime le même paquet sur de nombreuses lignes. Concaténez, collez, dédupliquez, et vous avez une ligne par nom==version pour un coup d'œil rapide à ce qui est réellement installé.

Lignes CSV collées depuis plusieurs sources

Fonctionne pour la déduplication au niveau de la ligne, ce dont vous avez généralement besoin quand chaque ligne est un enregistrement autonome. Attention : c'est de la déduplication de texte brut, pas consciente des colonnes. Si vous voulez une vraie déduplication au niveau de la ligne qui respecte les virgules entre guillemets et ignore l'ordre des colonnes, utilisez un vrai outil CSV. Pour la plupart des cas collés depuis un tableur, la déduplication par ligne suffit.

Nettoyer une bibliographie ou liste de citations copiée

Copier des références depuis trois onglets de navigateur dans un même document vous laisse avec le même DOI répété quatre fois. Collez, activez Couper les espaces (parce que copier-coller depuis des PDF adore ajouter des espaces parasites), dédupliquez, et vous obtenez une section de références propre. Le mode tri est pratique ici pour les listes de références alphabétiques.

Référence rapide de déduplication

Les cas limites qui mordent le plus souvent quand on déduplique du texte. Ça vaut le coup de les parcourir une fois avant de faire confiance à la sortie.

TopicWhat this tool does
Conservation de l'ordreConserver-l'ordre garde la première occurrence et supprime les doublons ultérieurs. Comme awk '!seen[$0]++' ou list(dict.fromkeys(lines)) en Python. Le mode tri est alphabétique, comme sort -u.
Sensibilité à la casseDésactivée par défaut. Alice et alice sont distinctes sauf si Insensible à la casse est activé. Les listes d'e-mails et de noms d'utilisateur la veulent généralement active ; les listes de SKU non.
Coupe des espacesDésactivée par défaut. " example", "example " et "example" sont trois lignes distinctes jusqu'à ce que Couper les espaces soit activé. Les espaces internes ne sont jamais touchés.
Lignes videsTraitées comme une valeur de ligne normale : chaîne vide. Avec la déduplication active, vous gardez une ligne vide s'il y en avait dans l'entrée. Pour retirer toutes les lignes vides, utilisez une étape séparée de nettoyage des espaces.
Fins de ligne (CRLF vs LF)Une ligne se terminant par \r\n est techniquement différente d'une qui se termine par \n si le \r final survit au découpage. On découpe sur \r?\n, donc les fins mixtes fusionnent. Si vous voyez des doublons fantômes, votre entrée a des caractères \r parasites en milieu de ligne.
Normalisation UnicodeDeux chaînes visuellement identiques peuvent comparer comme inégales si l'une utilise NFC et l'autre NFD (accents précomposés vs décomposés). Cet outil ne normalise pas. Si vous le suspectez, normalisez d'abord les deux entrées en NFC avec String.prototype.normalize('NFC') ou unicodedata.normalize en Python.
Saut de ligne finalUn fichier qui se termine par \n a une dernière ligne vide fantôme. La plupart des éditeurs la cachent. On la traite comme une ligne vide, dédupliquée avec les autres lignes vides. La sortie conserve un seul saut de ligne final par convention.
EncodageUTF-8 partout. Le navigateur gère le décodage quand vous collez ; si vos octets étaient à l'origine en Latin-1 ou Windows-1252, les caractères hors ASCII peuvent être faux avant même que la déduplication ne tourne. Convertissez l'encodage en amont.

Supprimer les lignes en double : questions fréquentes

Conserve-t-il l'ordre original ou trie-t-il la sortie ?

Les deux, à votre choix. Conserver l'ordre garde la première occurrence de chaque ligne et supprime chaque doublon ultérieur, donc la sortie suit à peu près le même ordre que l'entrée. Trier et dédupliquer trie tout le résultat alphabétiquement. Conserver l'ordre est ce que vous voulez quand l'ordre porte du sens (logs chronologiques, listes classées). Trier est ce que vous voulez quand vous avez juste besoin d'un ensemble unique propre.

La comparaison est-elle sensible à la casse ?

Par défaut oui, parce que c'est l'hypothèse sûre. Alice et alice sont des lignes distinctes sauf si vous activez Insensible à la casse. La plupart des systèmes d'e-mail traitent les adresses comme insensibles à la casse pour la partie locale, donc pour les listes d'e-mails vous voudrez presque toujours cette option active. Idem pour les noms d'utilisateur sur les plateformes insensibles à la casse. Pour les SKU et identifiants réellement sensibles à la casse, laissez-la désactivée.

Peut-il ignorer les espaces en début et en fin ?

Oui, avec Couper les espaces. Il retire les espaces et tabulations en début et fin avant comparaison, donc " example ", "example " et "example" fusionnent en une seule entrée. Utile quand votre saisie a été éditée à la main ou copiée-collée depuis un PDF, qui laissent tous deux des espaces parasites. Les espaces internes à une ligne sont laissés tels quels.

En quoi est-ce différent de la commande Unix uniq ?

La commande uniq ne fusionne que les doublons adjacents, ce qui surprend souvent. Deux lignes identiques séparées par une autre ligne survivent toutes deux à uniq. C'est pourquoi l'idiome Unix est sort | uniq ou sort -u : il faut trier d'abord pour que les doublons soient côte à côte. Cet outil n'a pas besoin d'une entrée triée, parce qu'il garde trace de chaque ligne vue dans un hash set au fil de l'eau.

Compte-t-il combien de doublons chaque ligne avait ?

Non, c'est une autre fonction. Si vous voulez des comptes, la commande Unix est uniq -c après un tri : sort input.txt | uniq -c | sort -rn donne une table de fréquences triée par compte, ce qui est ce que vous voulez pour trouver les entrées les plus fréquentes. Cet outil se concentre sur le nettoyage, pas sur l'analyse.

Quelle taille puis-je coller ?

Quelques millions de lignes, ça va. La déduplication elle-même est en O(n) avec recherches hash en temps constant, donc le goulot est le navigateur qui rend le panneau de résultat, pas la déduplication. Pour des entrées très grandes (50 Mo et plus), attendez-vous à une pause notable quand le textarea se redessine. Si votre entrée est aussi grande, vous avez presque certainement déjà sort -u sous la main ; utilisez-le.

Confidentialité et fonctionnement

Votre texte ne quitte jamais votre navigateur. La déduplication tourne sur votre machine, localement, contre un Set JavaScript. Pas d'analytics sur votre saisie, pas de logs, pas d'aller-retour cloud. Tout l'outil tient en quelques lignes de code : couper sur les sauts de ligne, parcourir, garder ce qu'on n'a pas vu. Les primitives de la bibliothèque standard derrière sont documentées dans la référence Set de MDN et la doc set Python équivalente.