Hvordan finne dupliserte data i en Linux -tekstfil med uniq

Hvordan finne dupliserte data i en Linux -tekstfil med uniq

Har du noen gang kommet over tekstfiler med gjentatte linjer og dupliserte ord? Kanskje du jobber regelmessig med kommandoutdata og vil filtrere dem for forskjellige strenger. Når det gjelder tekstfiler og fjerning av overflødige data i Linux, er uniq -kommandoen det beste alternativet.





I denne artikkelen vil vi diskutere uniq-kommandoen grundig, sammen med en detaljert veiledning om hvordan du bruker kommandoen til å fjerne dupliserte linjer fra en tekstfil.





Hva er den unike kommandoen?

Uniq -kommandoen i Linux brukes til å vise identiske linjer i en tekstfil. Denne kommandoen kan være nyttig hvis du vil fjerne dupliserte ord eller strenger fra en tekstfil. Siden uniq -kommandoen samsvarer med tilstøtende linjer for å finne overflødige kopier, fungerer den bare med sorterte tekstfiler.





Heldigvis kan du rør sortere kommando med uniq for å organisere tekstfilen på en måte som er kompatibel med kommandoen. Bortsett fra å vise gjentatte linjer, kan kommandoen uniq også telle forekomsten av dupliserte linjer i en tekstfil.

Slik bruker du uniq Command

Det er forskjellige alternativer og flagg som du kan bruke med uniq. Noen av dem er enkle og utfører enkle operasjoner som å skrive ut gjentatte linjer, mens andre er for avanserte brukere som ofte jobber med tekstfiler på Linux.



Grunnleggende syntaks

Den grunnleggende syntaksen til uniq -kommandoen er:

uniq option input output

...hvor alternativ er flagget som brukes til å påkalle spesifikke metoder for kommandoen, input er tekstfilen for behandling, og produksjon er banen til filen som vil lagre utdataene.





De produksjon argumentet er valgfritt og kan hoppes over. Hvis en bruker ikke angir inndatafilen, tar uniq data fra standardutgangen som inngang. Dette lar en bruker pipe uniq med andre Linux -kommandoer .

Eksempel på tekstfil

Vi bruker tekstfilen duplicate.txt som inngang for kommandoen.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Vær oppmerksom på at vi allerede har sortert denne tekstfilen ved hjelp av sortere kommando. Hvis du jobber med en annen tekstfil, kan du sortere den ved å bruke følgende kommando:

sort filename.txt > sorted.txt

Fjern dupliserte linjer

Den mest grunnleggende bruken av uniq er å fjerne gjentatte strenger fra inngangen og skrive ut unik utgang.

uniq duplicate.txt

Produksjon:

Legg merke til at systemet ikke viser den andre forekomsten av linjen Dette er en tekstfil . Den ovennevnte kommandoen skriver også bare ut de unike linjene i filen og påvirker ikke innholdet i den originale tekstfilen.

Tell gjentatte linjer

For å skrive ut antall gjentatte linjer i en tekstfil, bruk -c flagg med standardkommandoen.

uniq -c duplicate.txt

Produksjon:

Systemet viser antallet på hver linje som finnes i tekstfilen. Du kan se at linjen Dette er en tekstfil forekommer to ganger i filen. Som standard er uniq-kommandoen store og små bokstaver.

Hvis du bare vil skrive ut dupliserte linjer fra tekstfilen, bruker du -D flagg. De -D står for Duplisere .

uniq -D duplicate.txt

Systemet vil vise utdata som følger.

This is a text file.
This is a text file.

Hopp over felt mens du ser etter dubletter

Hvis du vil hoppe over et bestemt antall felt mens du samsvarer med strengene, kan du bruke -f flagg med kommandoen. De -f står for Felt .

Vurder følgende tekstfil fields.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

Slik hopper du over det første feltet:

uniq -f 1 fields.txt

Produksjon:

192.168.0.1 TCP
Linux FS

Den ovennevnte kommandoen hoppet over det første feltet (IP -adressene og OS -navnene) og matchet det andre ordet (TCP og FS). Deretter viste den den første forekomsten av hver kamp som utdata.

Ignorer tegn når du sammenligner

Som å hoppe over felt, kan du også hoppe over tegn. De -s flag lar deg angi antall tegn som skal hoppes over mens du matcher dupliserte linjer. Denne funksjonen hjelper når dataene du jobber med er i form av en liste som følger:

hvordan få alexa til å spille youtube
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

For å ignorere de to første tegnene (listenummereringene) i filen list.txt :

uniq -s 2 list.txt

Produksjon:

I utdataene ovenfor ble de to første tegnene ignorert, og resten av dem ble matchet for unike linjer.

Sjekk First N Number of tegn for duplikater

De -i flag lar deg bare kontrollere et bestemt antall tegn for duplikater. For eksempel:

uniq -w 2 duplicate.txt

Kommandoen ovenfor vil bare matche de to første tegnene og skrive ut unike linjer hvis noen.

Produksjon:

Fjern saksfølsomhet

Som nevnt ovenfor er uniq store og små bokstaver følsomme mens de matcher linjer i en fil. For å ignorere store bokstaver, bruk -Jeg alternativet med kommandoen.

uniq -i duplicate.txt

Du vil se følgende utgang.

Legg merke til i utgangen ovenfor, uniq viste ikke linjene FÅ DETTE og DETTE ER EN TEKSTFIL .

Send utdata til en fil

For å sende utdataene fra kommandoen uniq til en fil, kan du bruke Omdirigering av utgang ( > ) karakter som følger:

uniq -i duplicate.txt > otherfile.txt

Mens du sender en utgang til en tekstfil, viser ikke systemet utdataene fra kommandoen. Du kan kontrollere innholdet i den nye filen ved hjelp av katt kommando.

cat otherfile.txt

Du kan også bruke andre måter å sende kommandolinjeutgang til en fil i Linux .

Analysere dupliserte data med uniq

Mesteparten av tiden mens du administrerer Linux -servere, vil du enten jobbe på terminalen eller redigere tekstfiler. Derfor kan det være en stor fordel for ditt Linux -ferdighetssett å vite hvordan du fjerner overflødige kopier av linjer i en tekstfil.

Å jobbe med tekstfiler kan være frustrerende hvis du ikke vet hvordan du filtrerer og sorterer tekst i en fil. For å gjøre arbeidet ditt enklere, har Linux flere tekstredigeringskommandoer som f.eks sed og awk som lar deg arbeide effektivt med tekstfiler og kommandolinjeutganger.

Dele Dele kvitring E -post Disse 10 sed eksemplene vil gjøre deg til en Linux Power User

Vil du bli en Linux -strømbruker? Å ta tak i sed vil hjelpe. Lær av disse 10 sed eksemplene.

Les neste
Relaterte temaer
  • Linux
  • Linux
Om forfatteren Deepesh Sharma(79 artikler publisert)

Deepesh er Junior Editor for Linux ved MUO. Han skriver informasjonsguider på Linux, med sikte på å gi alle nykommere en lykkelig opplevelse. Usikker på filmer, men hvis du vil snakke om teknologi, er han din fyr. På fritiden kan du finne ham lese bøker, lytte til forskjellige musikksjangre eller spille gitar.

Mer fra Deepesh Sharma

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere