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

Fjern dublerede linjer: deduplikér tekst online

Indsæt en hvilken som helst liste, fjern eksakte dubletter, bevar rækkefølgen eller sortér resultatet. Skiftere for store/små bogstaver og mellemrum medfølger.

Hvad dette værktøj gør

Et gratis værktøj i browseren til at fjerne dublerede linjer fra en enkelt tekstblok. Indsæt dit input, vælg om du vil bevare den oprindelige rækkefølge eller sortere outputtet, og dubletterne er væk. Intet forlader din maskine.

Det er GUI-pendanten til sort -u på kommandolinjen, eller til awk '!seen[$0]++', når du vil bevare første forekomst i oprindelig rækkefølge. Hvis du nogensinde har indsat en e-mail-eksport på 4.000 linjer i en terminal bare for at køre sort | uniq, er dette det samme uden terminalen.

Deduplikering er eksakt og linjebaseret. To linjer skal matche tegn for tegn (afhængigt af dine skiftere for store/små bogstaver og trim) for at tælle som dubletter. Slør-matching, næsten-dubletdetektion og lighedsscoring er bevidst uden for scope. Andet problem, andet værktøj.

Hvordan deduplikeringen faktisk virker her

Internt går værktøjet hver linje igennem én gang og holder styr på sete værdier i en hash-baseret mængde, samme datastruktur som JavaScripts Set eller Pythons set. Opslag er O(1) i gennemsnit, så en million linjer kører på under et sekund på en almindelig laptop. Den underliggende algoritme er almindelig hash table-medlemskab.

To tilstande. Bevar rækkefølge holder fast i første forekomst af hver linje og smider hver senere dublet væk, sådan som awk '!seen[$0]++' opfører sig. Sortér og deduplikér sorterer først hele inputtet alfabetisk og udsender hver unik linje én gang, sådan som sort -u opfører sig. Vælg det, din nedstrømsforbruger forventer.

Der er skiftere for selve sammenligningen. Uafhængig af store/små bogstaver behandler [email protected] og [email protected] som samme linje. Trim mellemrum fjerner indledende og afsluttende mellemrum og tabs før sammenligning, så " example", "example " og "example" falder sammen til én post. Begge er slået fra som standard, fordi den sikre adfærd er at matche præcist det, der blev skrevet.

Sådan fjerner du dublerede linjer i tre trin

Ét inputpanel, ét outputpanel. Intet uploades.

  1. 1

    Indsæt dine linjer

    Slip teksten i inputpanelet. Enhver liste virker: e-mails, IP'er, URL'er, SKU'er, log-tidsstempler, pakkenavne, alt med én pr. linje. Klik på Sample for at indlæse et eksempel med tilsigtede dubletter, hvis du vil se resultatet først.

  2. 2

    Vælg dine indstillinger

    Vælg Bevar rækkefølge (holder fast i første forekomst, som awk '!seen[$0]++') eller Sortér og deduplikér (alfabetisk, som sort -u). Slå Uafhængig af store/små bogstaver til, hvis Alice og alice skal smelte sammen, og Trim mellemrum, hvis indledende eller afsluttende mellemrum skal ignoreres.

  3. 3

    Kopiér eller download resultatet

    Det højre panel viser det deduplikerede output og en optælling af, hvor mange linjer der blev fjernet. Klik på Copy for at hente det, eller på Download for at gemme det som en .txt-fil. Begge paneler scroller uafhængigt, så du kan se, hvilke linjer der forsvandt.

Hvornår du vil bruge dette værktøj

Rydde op i en marketing-e-mailliste før import

Eksportér din liste fra ét CRM, tilføj en fra en webinar-tilmelding, indsæt begge i værktøjet, deduplikér med Uafhængig af store/små bogstaver og Trim mellemrum slået til. Mailchimp og HubSpot afviser alligevel dublerede adresser ved import, men de afviser hele batchen i stedet for kun dubletterne, så at gøre dette først sparer en gen-upload.

Deduplikere IP-adresser i en revisionslog

Træk kilde-IP'erne ud fra en uges auth.log med awk, indsæt dem, deduplikér i bevar-rækkefølge-tilstand. Du får en ren liste over unikke angribere uden at miste det grove kronologiske signal om, "hvem dukkede op først". Send det ind i din firewalls blokeringsliste.

Rydde op i en liste over URL'er skrabet fra flere sider

At skrabe et sitemap og et pagineret indeks returnerer den samme URL flere gange. Slip den kombinerede liste i, sortér og deduplikér, og du har en kanonisk crawl-grænse. Afsluttende skråstreger og query strings tæller stadig som forskellige linjer, så normalisér dem først, hvis du vil flette dem.

Reducere støj fra pip freeze eller npm ls til unikke pakker

pip freeze på tværs af to virtualenvs, eller npm ls --all på tværs af et monorepo, skriver den samme pakke på mange linjer. Saml sammen, indsæt, deduplikér, og du har én linje pr. navn==version til et hurtigt blik på, hvad der faktisk er installeret.

CSV-rækker indsat fra flere kilder

Virker til dedup på linjeniveau, hvilket er det, du normalt har brug for, når hver række er en selvstændig post. NB: dette er dedup af ren tekst, ikke kolonnebevidst. Hvis du vil have ægte rækkeniveau-dedup, der respekterer citerede kommaer og ignorerer kolonnerækkefølge, så brug et rigtigt CSV-værktøj. For de fleste indsat-fra-regneark-tilfælde er linje-dedup nok.

Rydde op i en kopieret bibliografi eller citatliste

At kopiere referencer fra tre browserfaner ind i ét dokument efterlader dig med samme DOI gentaget fire gange. Indsæt, slå Trim mellemrum til (fordi kopiér-indsæt fra PDF'er elsker at tilføje løse mellemrum), deduplikér, og du får en ren referenceafsnit. Sortér-tilstanden er praktisk her til alfabetiske referencelister.

Dedup-hurtigreference

Kant-tilfældene, der oftest bider ved deduplikering af tekst. Værd at skimme én gang, før du stoler på outputtet.

TopicWhat this tool does
Bevarelse af rækkefølgeBevar-rækkefølge holder fast i første forekomst og smider senere dupes væk. Som awk '!seen[$0]++' eller Python list(dict.fromkeys(lines)). Sortér-tilstand er alfabetisk, som sort -u.
Skelnen mellem store/små bogstaverSlået fra som standard. Alice og alice er forskellige, medmindre Uafhængig af store/små bogstaver er slået til. E-mail- og brugernavne-lister vil typisk have det slået til; SKU-lister typisk ikke.
Trim af mellemrumSlået fra som standard. " example", "example " og "example" er tre forskellige linjer, indtil Trim mellemrum er slået til. Internt mellemrum røres aldrig.
Tomme linjerBehandles som en almindelig linjeværdi: tom streng. Med dedup slået til beholder du én tom linje, hvis der var nogle i inputtet. For at fjerne enhver tom linje skal du bruge et separat mellemrum-oprydningstrin.
Linjeskift (CRLF vs LF)En linje, der slutter på \r\n, er teknisk forskellig fra en, der slutter på \n, hvis det afsluttende \r overlever opdelingen. Vi opdeler på \r?\n, så blandede linjeafslutninger smelter sammen. Hvis du ser spøgelses-dubletter, har dit input løse \r-tegn midt i linjen.
Unicode-normaliseringTo visuelt identiske strenge kan sammenlignes som ulige, hvis den ene bruger NFC og den anden NFD (præ-komponerede vs dekomponerede accenter). Dette værktøj normaliserer ikke. Hvis du har mistanke om det, så normalisér først begge input til NFC med String.prototype.normalize('NFC') eller Python unicodedata.normalize.
Afsluttende linjeskift i slutningen af inputEn fil, der slutter på \n, har en fantomtom sidste linje. De fleste editorer skjuler dette. Vi behandler det som én tom linje, deduplikeret med eventuelle andre tomme linjer. Outputtet bevarer et enkelt afsluttende linjeskift som konvention.
KodningUTF-8 hele vejen. Browseren håndterer afkodning, når du indsætter; hvis dine bytes oprindeligt var Latin-1 eller Windows-1252, kan tegn uden for ASCII være forkerte, før dedupen overhovedet kører. Konvertér kodningen opstrøms.

Fjern dublerede linjer: ofte stillede spørgsmål

Bevarer den den oprindelige rækkefølge eller sorterer outputtet?

Begge dele, dit valg. Bevar rækkefølge holder fast i første forekomst af hver linje og smider hver senere dublet væk, så outputtet læses i nogenlunde samme rækkefølge som inputtet. Sortér og deduplikér sorterer hele resultatet alfabetisk. Bevar rækkefølge er det, du vil have, når rækkefølgen bærer betydning (kronologiske logs, rangerede lister). Sortér er det, du vil have, når du bare har brug for et rent unikt sæt.

Skelner sammenligningen mellem store og små bogstaver?

Som standard ja, fordi det er den sikre antagelse. Alice og alice er forskellige linjer, medmindre du slår Uafhængig af store/små bogstaver til. De fleste e-mailsystemer behandler adresser som uafhængige af store/små bogstaver i den lokale del, så for e-maillister vil du næsten altid have denne skifter slået til. Det samme gælder for brugernavne på platforme uafhængige af store/små bogstaver. For SKU'er og identifikatorer, der virkelig er afhængige af store/små bogstaver, så lad den være slået fra.

Kan den ignorere indledende og afsluttende mellemrum?

Ja, med Trim mellemrum. Den fjerner indledende og afsluttende mellemrum og tabs før sammenligning, så " example ", "example " og "example" falder sammen til én post. Nyttigt, når dit input er redigeret i hånden eller kopieret fra en PDF, begge efterlader løse mellemrum. Internt mellemrum inde i en linje lades i fred.

Hvordan adskiller dette sig fra Unix-kommandoen uniq?

Kommandoen uniq samler kun tilstødende dubletter, hvilket er en almindelig overraskelse. To identiske linjer adskilt af en anden linje overlever begge uniq. Derfor er Unix-idiomet sort | uniq eller sort -u: man skal sortere først, så dubletter ligger ved siden af hinanden. Dette værktøj behøver ikke sorteret input, fordi det holder styr på hver set linje i en hash-mængde, mens det går.

Tæller den, hvor mange dubletter hver linje havde?

Nej, det er en anden funktion. Hvis du har brug for tællinger, er Unix-kommandoen uniq -c efter et sort: sort input.txt | uniq -c | sort -rn giver en frekvenstabel sorteret efter antal, hvilket er det, du vil have, når du finder de hyppigste poster. Dette værktøj fokuserer på oprydning, ikke analyse.

Hvor stort et input kan jeg indsætte?

Et par millioner linjer er fint. Selve dedupen er O(n) med konstanttids-hash-opslag, så flaskehalsen er browseren, der renderer resultatpanelet, ikke dedupen. For meget store input (50 MB+) forvent en mærkbar pause, når textarea omtegnes. Hvis dit input er så stort, har du næsten helt sikkert allerede sort -u ved hånden; brug det.

Er det gratis, og skal jeg oprette en konto?

Gratis, ingen konto, ingen hage ved det. Der er ingen registreringsmur, ingen daglig grænse for, hvor meget du indsætter, og intet betalt niveau, der gemmer de nyttige indstillinger bag et login. Det hele er almindelig JavaScript, der kører i din browser, så når siden er indlæst, kan du afbryde forbindelsen, og det virker stadig. Indsæt din liste, deduplikér den, kopiér resultatet, og luk fanen.

Hvordan adskiller dette sig fra Fjern dubletter i Excel eller kommandoen sort -u?

Intet regneark, ingen terminal: du indsætter i et felt og klikker. Excel kræver, at du indlæser data i en kolonne og åbner en dialog; sort -u har brug for en shell. Der er også en reel forskel i adfærd. uniq fjerner kun tilstødende dubletter, så du skal sortere først, hvilket roder din rækkefølge. Dette værktøj fanger dubletter hvor som helst i teksten og kan bevare den oprindelige rækkefølge. Og intet af det, du indsætter, uploades.

Er min tekst privat, eller uploades der noget?

Der uploades intet. Dedupen kører helt i din browser mod et JavaScript-Set, så din liste rører aldrig en server, logges aldrig og gemmes aldrig. Du kan indsætte en intern e-maileksport, en kundeliste eller et tjek af lækkede adgangskoder, uden at det forlader din maskine. For at bekræfte det, åbn browserens DevTools, hold øje med Network-fanen, og deduplikér: der affyres ingen udgående anmodning.

Virker det offline og på min telefon?

Begge dele. Når siden er indlæst, er dedupen lokal JavaScript, så du kan slukke for wifi eller køre ind i en tunnel, og det bliver ved med at virke. På telefonen stabler layoutet input og output, så du kan indsætte en liste fra en e-mail eller en note-app, deduplikere den og kopiere resultatet tilbage. Der er intet at installere og ingen app at downloade; det er bare websiden.

Hvordan adskiller det sig fra en teksteditor som Notepad++ eller Sublime Text?

Mange editorer kan fjerne dublerede linjer, men funktionen ligger gemt væk. Notepad++ kræver TextFX-pluginnet eller en sortering, der kun fjerner tilstødende dubletter; Sublime gemmer det under Permute Lines og derefter Unique. Her er det hele formålet med siden: indsæt, klik, kopiér, uden et plugin at installere og uden at noget bliver uploadet. Hagen er, at en editor holder din fil åben, så du kan blive ved med at arbejde i den, så til en hurtig engangsliste er det hurtigere her, men til rigtig redigering går du alligevel tilbage til editoren.

Privatliv og hvordan det virker

Din tekst forlader aldrig din browser. Dedupen kører på din maskine, lokalt, mod et JavaScript Set. Ingen analyse af dit input, ingen logs, ingen tur til skyen. Hele værktøjet er nogle få linjer kode: opdel på linjeskift, gå igennem, behold det vi ikke har set. Standardbiblioteksprimitiverne bag det er dokumenteret i MDN's Set-reference og de tilsvarende Python set-dokumenter.