Rimuovi righe duplicate: deduplica testo online
Incolla qualsiasi elenco, togli i duplicati esatti, mantieni l'ordine o ordina il risultato. Inclusi gli interruttori per maiuscole e spazi.
Cosa fa questo strumento
Un'utility gratuita nel browser per rimuovere righe duplicate da un singolo blocco di testo. Incolla l'input, scegli se preservare l'ordine originale o ordinare l'output, e i duplicati spariscono. Niente lascia la tua macchina.
È l'equivalente GUI di sort -u sulla riga di comando, o di awk '!seen[$0]++' quando vuoi mantenere la prima occorrenza nell'ordine originale. Se hai mai incollato un export email da 4.000 righe in un terminale solo per eseguire sort | uniq, questa è la stessa cosa senza terminale.
La deduplicazione è esatta e per riga. Due righe devono coincidere carattere per carattere (in base ai tuoi interruttori di maiuscole e taglio) per contare come duplicati. La corrispondenza fuzzy, il rilevamento di quasi-duplicati e il punteggio di similarità sono volutamente fuori scopo. Problema diverso, strumento diverso.
Come funziona davvero la deduplicazione qui
Internamente lo strumento percorre ogni riga una volta e tiene traccia dei valori visti in un set basato su hash, la stessa struttura dati del Set di JavaScript o del set di Python. Le ricerche sono O(1) in media, quindi un milione di righe gira in meno di un secondo su un laptop normale. L'algoritmo sottostante è la semplice appartenenza a una hash table.
Due modalità. Mantieni ordine tiene la prima occorrenza di ogni riga e scarta ogni duplicato successivo, come si comporta awk '!seen[$0]++'. Ordina e deduplica ordina prima tutto l'input alfabeticamente ed emette ogni riga unica una volta, come si comporta sort -u. Scegli ciò che si aspetta il tuo consumatore a valle.
Ci sono interruttori per il confronto stesso. Insensibile alle maiuscole tratta [email protected] e [email protected] come la stessa riga. Taglia spazi rimuove spazi e tab iniziali e finali prima del confronto, quindi " example", "example " e "example" collassano in una sola voce. Entrambi sono off di default perché il comportamento sicuro è far corrispondere esattamente ciò che è stato digitato.
Come rimuovere righe duplicate in tre passi
Un pannello in entrata, uno in uscita. Niente viene caricato.
- 1
Incolla le tue righe
Lascia cadere il testo nel pannello d'input. Funziona qualsiasi elenco: email, IP, URL, SKU, timestamp di log, nomi di pacchetti, qualsiasi cosa una per riga. Clicca Sample per caricare un esempio con duplicati intenzionali se vuoi vedere prima il risultato.
- 2
Scegli le opzioni
Scegli Mantieni ordine (tiene la prima occorrenza, come awk '!seen[$0]++') o Ordina e deduplica (alfabetico, come sort -u). Attiva Insensibile alle maiuscole se Alice e alice devono fondersi, e Taglia spazi se gli spazi iniziali o finali devono essere ignorati.
- 3
Copia o scarica il risultato
Il pannello di destra mostra l'output deduplicato e un conteggio di quante righe sono state rimosse. Clicca Copy per prenderlo, o Download per salvarlo come file .txt. Entrambi i pannelli scorrono in modo indipendente, così puoi vedere quali righe sono sparite.
Quando vorrai questo strumento
Pulire una lista email di marketing prima dell'import
Esporta la tua lista da un CRM, infila quella di un'iscrizione a webinar, incolla entrambe nello strumento, deduplica con Insensibile alle maiuscole e Taglia spazi attivi. Mailchimp e HubSpot rifiutano comunque gli indirizzi duplicati all'import, ma rifiutano l'intero batch invece dei soli duplicati, quindi farlo prima evita un re-upload.
Deduplicare gli IP in un log di audit
Estrai gli IP sorgente da una settimana di auth.log con awk, incollali, deduplica in modalità mantieni ordine. Ottieni una lista pulita di attaccanti unici senza perdere il segnale cronologico approssimativo di "chi si è presentato per primo". Mettilo nella lista di blocco del tuo firewall.
Pulire una lista di URL raschiati da più pagine
Raschiare una sitemap e un indice paginato restituirà lo stesso URL più volte. Lascia cadere la lista combinata, ordina e deduplica, e hai una frontiera di crawl canonica. Le slash finali e le query string contano ancora come righe distinte, quindi normalizzale prima se vuoi unirle.
Ridurre il rumore di pip freeze o npm ls a pacchetti unici
pip freeze tra due virtualenv, o npm ls --all in un monorepo, stampa lo stesso pacchetto su molte righe. Concatena, incolla, deduplica, e hai una riga per nome==versione per un'occhiata rapida a cosa è effettivamente installato.
Righe CSV incollate da più sorgenti
Funziona per la deduplicazione a livello di riga, che è ciò di cui di solito hai bisogno quando ogni riga è un record autonomo. Attenzione: questa è deduplicazione di testo puro, non consapevole delle colonne. Se vuoi una vera deduplicazione a livello di riga che rispetti le virgole tra virgolette e ignori l'ordine delle colonne, usa un vero strumento CSV. Per la maggior parte dei casi incollati da foglio di calcolo, la dedup per riga basta.
Pulire una bibliografia o lista di citazioni copiata
Copiare riferimenti da tre schede del browser in un singolo documento ti lascia con lo stesso DOI ripetuto quattro volte. Incolla, attiva Taglia spazi (perché copia-incolla da PDF ama aggiungere spazi vaganti), deduplica, e ottieni una sezione di riferimenti pulita. La modalità di ordinamento qui è comoda per liste di riferimenti alfabetiche.
Riferimento rapido alla deduplicazione
I casi limite che mordono più spesso quando si deduplica testo. Vale la pena scorrerli una volta prima di fidarsi dell'output.
| Topic | What this tool does |
|---|
| Conservazione dell'ordine | Mantieni-ordine tiene la prima occorrenza e scarta i duplicati successivi. Come awk '!seen[$0]++' o list(dict.fromkeys(lines)) in Python. La modalità ordina è alfabetica, come sort -u. |
|---|
| Sensibilità alle maiuscole | Spenta di default. Alice e alice sono distinte a meno che Insensibile alle maiuscole sia attivo. Le liste email e nomi utente di solito la vogliono attiva; le liste SKU di solito no. |
|---|
| Taglio spazi | Spento di default. " example", "example " e "example" sono tre righe diverse finché Taglia spazi non è attivo. Gli spazi interni non vengono mai toccati. |
|---|
| Righe vuote | Trattate come un valore di riga normale: stringa vuota. Con la dedup attiva, mantieni una riga vuota se ce n'erano nell'input. Per togliere ogni riga vuota, usa un passo separato di pulizia spazi. |
|---|
| Fine riga (CRLF vs LF) | Una riga che termina in \r\n è tecnicamente diversa da una che termina in \n se il \r finale sopravvive allo split. Splittiamo su \r?\n, quindi i fine riga misti collassano. Se vedi duplicati fantasma, il tuo input ha caratteri \r vaganti a metà riga. |
|---|
| Normalizzazione Unicode | Due stringhe visualmente identiche possono confrontarsi come diverse se una usa NFC e l'altra NFD (accenti precomposti vs decomposti). Questo strumento non normalizza. Se sospetti questo, normalizza prima entrambi gli input a NFC con String.prototype.normalize('NFC') o unicodedata.normalize in Python. |
|---|
| Newline finale alla fine dell'input | Un file che termina in \n ha una riga vuota finale fantasma. La maggior parte degli editor la nasconde. La trattiamo come una riga vuota, deduplicata con qualsiasi altra riga vuota. L'output preserva un singolo newline finale per convenzione. |
|---|
| Codifica | UTF-8 ovunque. Il browser gestisce la decodifica quando incolli; se i tuoi byte erano originariamente Latin-1 o Windows-1252, i caratteri fuori da ASCII potrebbero essere sbagliati prima ancora che la dedup giri. Converti la codifica a monte. |
|---|
Rimuovi righe duplicate: domande frequenti
Mantiene l'ordine originale o ordina l'output?
Entrambi, a tua scelta. Mantieni ordine tiene la prima occorrenza di ogni riga e scarta ogni duplicato successivo, quindi l'output si legge grossomodo nello stesso ordine dell'input. Ordina e deduplica ordina tutto il risultato alfabeticamente. Mantieni ordine è ciò che vuoi quando l'ordine porta significato (log cronologici, liste classificate). Ordina è ciò che vuoi quando hai bisogno solo di un insieme unico pulito.
Il confronto è sensibile alle maiuscole?
Di default sì, perché è l'assunzione sicura. Alice e alice sono righe diverse a meno che tu non attivi Insensibile alle maiuscole. La maggior parte dei sistemi email tratta gli indirizzi come insensibili alle maiuscole sulla parte locale, quindi per le liste email vorrai quasi sempre questo interruttore attivo. Lo stesso vale per i nomi utente su piattaforme insensibili alle maiuscole. Per SKU e identificatori genuinamente sensibili alle maiuscole, lascialo spento.
Può ignorare gli spazi iniziali e finali?
Sì, con Taglia spazi. Rimuove spazi e tab iniziali e finali prima del confronto, quindi " example ", "example " e "example" collassano in una sola voce. Utile quando il tuo input è stato modificato a mano o copiato da un PDF, entrambi lasciano spazi vaganti. Lo spazio interno dentro una riga viene lasciato in pace.
In cosa è diverso dal comando uniq di Unix?
Il comando uniq collassa solo i duplicati adiacenti, sorpresa comune. Due righe identiche separate da una riga diversa sopravvivono entrambe a uniq. Per questo l'idioma Unix è sort | uniq o sort -u: devi prima ordinare in modo che i duplicati siano vicini. Questo strumento non ha bisogno di un input ordinato, perché traccia ogni riga vista in un hash set mentre va.
Conta quanti duplicati aveva ogni riga?
No, è una funzione diversa. Se ti servono i conteggi, il comando Unix è uniq -c dopo un sort: sort input.txt | uniq -c | sort -rn dà una tabella di frequenze ordinata per conteggio, che è ciò che vuoi quando trovi le voci più comuni. Questo strumento si concentra sulla pulizia, non sull'analisi.
Quanto è grande un input che posso incollare?
Qualche milione di righe va bene. La deduplicazione in sé è O(n) con lookup hash a tempo costante, quindi il collo di bottiglia è il browser che renderizza il pannello dei risultati, non la dedup. Per input molto grandi (50 MB+), aspettati una pausa percepibile quando la textarea si ridipinge. Se il tuo input è così grande, hai quasi certamente già sort -u a portata di mano; usalo.
Privacy e come funziona
Il tuo testo non lascia mai il browser. La dedup gira sulla tua macchina, localmente, contro un Set JavaScript. Niente analytics sul tuo input, niente log, niente viaggi al cloud. Tutto lo strumento è poche righe di codice: spezzare sui newline, scorrere, tenere ciò che non abbiamo visto. I primitivi di libreria standard dietro tutto questo sono documentati nel riferimento Set di MDN e nei documenti set di Python equivalenti.