Sådan finder du duplikerede data i en Linux -tekstfil med uniq

Sådan finder du duplikerede data i en Linux -tekstfil med uniq

Har du nogensinde stødt på tekstfiler med gentagne linjer og dublerede ord? Måske arbejder du regelmæssigt med kommandoutput og vil filtrere dem til forskellige strenge. Når det kommer til tekstfiler og fjernelse af redundante data i Linux, er kommandoen uniq din bedste chance.





I denne artikel vil vi diskutere uniq-kommandoen i dybden sammen med en detaljeret vejledning i, hvordan du bruger kommandoen til at fjerne dublerede linjer fra en tekstfil.





Hvad er uniq -kommandoen?

Kommandoen uniq i Linux bruges til at vise identiske linjer i en tekstfil. Denne kommando kan være nyttig, hvis du vil fjerne dublerede ord eller strenge fra en tekstfil. Da kommandoen uniq matcher tilstødende linjer til at finde redundante kopier, fungerer den kun med sorterede tekstfiler.





Heldigvis kan du rør sortere kommando med uniq for at organisere tekstfilen på en måde, der er kompatibel med kommandoen. Bortset fra at vise gentagne linjer kan kommandoen uniq også tælle forekomsten af ​​dublerede linjer i en tekstfil.

Sådan bruges uniq -kommandoen

Der er forskellige muligheder og flag, som du kan bruge med uniq. Nogle af dem er grundlæggende og udfører enkle operationer, f.eks. Udskrivning af gentagne linjer, mens andre er for avancerede brugere, der ofte arbejder med tekstfiler på Linux.



Grundlæggende syntaks

Den grundlæggende syntaks for kommandoen uniq er:

uniq option input output

...hvor mulighed er det flag, der bruges til at påberåbe bestemte metoder til kommandoen, input er tekstfilen til behandling, og produktion er stien til filen, der gemmer output.





Det produktion argument er valgfrit og kan springes over. Hvis en bruger ikke angiver inputfilen, tager uniq data fra standardoutput som input. Dette giver en bruger mulighed for at rør uniq med andre Linux -kommandoer .

Eksempel på tekstfil

Vi bruger tekstfilen duplicate.txt som input til 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.

Bemærk, at vi allerede har sorteret denne tekstfil ved hjælp af sortere kommando. Hvis du arbejder med en anden tekstfil, kan du sortere den ved hjælp af følgende kommando:

sort filename.txt > sorted.txt

Fjern duplikerede linjer

Den mest grundlæggende anvendelse af uniq er at fjerne gentagne strenge fra input og udskrive unikt output.

uniq duplicate.txt

Produktion:

Bemærk, at systemet ikke viser den anden forekomst af linjen Dette er en tekstfil . Den ovennævnte kommando udskriver også kun de unikke linjer i filen og påvirker ikke indholdet i den originale tekstfil.

Tæl gentagne linjer

Hvis du vil udsende antallet af gentagne linjer i en tekstfil, skal du bruge -c flag med standardkommandoen.

uniq -c duplicate.txt

Produktion:

Systemet viser antallet af hver linje, der findes i tekstfilen. Du kan se, at linjen Dette er en tekstfil forekommer to gange i filen. Som standard er kommandoen uniq store og små bogstaver.

Hvis du kun vil udskrive dubletter fra tekstfilen, skal du bruge -D flag. Det -D står for Duplikere .

uniq -D duplicate.txt

Systemet viser output som følger.

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

Spring felter over, mens der kontrolleres for dubletter

Hvis du vil springe et bestemt antal felter over, mens du matcher strengene, kan du bruge -f flag med kommandoen. Det -f står for Mark .

Overvej følgende tekstfil felter.txt .

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

Sådan springer du det første felt over:

uniq -f 1 fields.txt

Produktion:

192.168.0.1 TCP
Linux FS

Den førnævnte kommando sprang det første felt over (IP -adresserne og OS -navnene) og matchede det andet ord (TCP og FS). Derefter viste det den første forekomst af hver kamp som output.

Ignorer tegn ved sammenligning

Ligesom at springe felter over, kan du også springe tegn over. Det -s flag giver dig mulighed for at angive antallet af tegn, der skal springes over, mens du matcher dubletter. Denne funktion hjælper, når de data, du arbejder med, er i form af en liste som følger:

hvordan man vender videoer i Windows Media Player
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

For at ignorere de to første tegn (listenummereringerne) i filen list.txt :

uniq -s 2 list.txt

Produktion:

I output ovenfor blev de to første tegn ignoreret, og resten af ​​dem blev matchet for unikke linjer.

Kontroller første N antal tegn for dubletter

Det -i flag giver dig mulighed for kun at kontrollere et bestemt antal tegn for dubletter. For eksempel:

uniq -w 2 duplicate.txt

Den ovennævnte kommando matcher kun de to første tegn og udskriver eventuelle unikke linjer.

Produktion:

Fjern sagfølsomhed

Som nævnt ovenfor er uniq store og små bogstaver følsomme, mens linjer matches i en fil. Hvis du vil ignorere tegnsætningen, skal du bruge -jeg mulighed med kommandoen.

uniq -i duplicate.txt

Du vil se følgende output.

Bemærk i output ovenfor, uniq viste ikke linjerne FÅ DETTE og DETTE ER EN TEKSTFIL .

Send output til en fil

For at sende output fra uniq -kommandoen til en fil kan du bruge Omdirigering af output ( > ) tegn som følger:

uniq -i duplicate.txt > otherfile.txt

Mens der sendes et output til en tekstfil, viser systemet ikke output fra kommandoen. Du kan kontrollere indholdet af den nye fil ved hjælp af kat kommando.

cat otherfile.txt

Du kan også bruge andre måder at sende kommandolinjens output til en fil i Linux .

Analyse af dublerede data med uniq

Det meste af tiden, mens du administrerer Linux -servere, arbejder du enten på terminalen eller redigerer tekstfiler. Derfor kan viden om, hvordan du fjerner overflødige kopier af linjer i en tekstfil, være et stort aktiv for dit Linux -færdighedssæt.

At arbejde med tekstfiler kan være frustrerende, hvis du ikke ved, hvordan du filtrerer og sorterer tekst i en fil. For at gøre dit arbejde lettere har Linux flere tekstredigeringskommandoer som f.eks sed og awk der giver dig mulighed for at arbejde effektivt med tekstfiler og kommandolinjeudgange.

Del Del Tweet E -mail Disse 10 sed eksempler vil gøre dig til en Linux Power User

Vil du blive en Linux -strømbruger? Det vil hjælpe at få styr på sed. Lær af disse 10 sed eksempler.

Læs Næste
Relaterede emner
  • Linux
  • Linux
Om forfatteren Deepesh Sharma(79 artikler udgivet)

Deepesh er Junior Editor for Linux på MUO. Han skriver informationsguider om Linux med det formål at give alle tilflyttere en salig oplevelse. Ikke sikker på film, men hvis du vil tale om teknologi, er han din fyr. I fritiden kan du finde ham læse bøger, lytte til forskellige musikgenrer eller spille sin guitar.

Mere fra Deepesh Sharma

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere