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.

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.