Hur hittar du dubblettdata i en Linux -textfil med uniq

Hur hittar du dubblettdata i en Linux -textfil med uniq

Har du någonsin stött på textfiler med upprepade rader och dubblettord? Kanske arbetar du regelbundet med kommandoutmatning och vill filtrera dem efter distinkta strängar. När det gäller textfiler och borttagning av redundanta data i Linux är kommandot uniq din bästa insats.





I den här artikeln kommer vi att diskutera uniq-kommandot på djupet, tillsammans med en detaljerad guide om hur du använder kommandot för att ta bort dubbletter av rader från en textfil.





Vad är uniq -kommandot?

Kommandot uniq i Linux används för att visa identiska rader i en textfil. Detta kommando kan vara till hjälp om du vill ta bort dubbletter av ord eller strängar från en textfil. Eftersom kommandot uniq matchar angränsande rader för att hitta redundanta kopior fungerar det bara med sorterade textfiler.





Lyckligtvis kan du pipa sortera kommando med uniq för att organisera textfilen på ett sätt som är kompatibelt med kommandot. Förutom att visa upprepade rader kan kommandot uniq också räkna förekomsten av dubblerade rader i en textfil.

Så här använder du uniq Command

Det finns olika alternativ och flaggor som du kan använda med uniq. Några av dem är grundläggande och utför enkla operationer som att skriva ut upprepade rader, medan andra är för avancerade användare som ofta arbetar med textfiler på Linux.



Grundläggande syntax

Grundsyntaxen för uniq -kommandot är:

uniq option input output

...var alternativ är flaggan som används för att åberopa specifika metoder för kommandot, inmatning är textfilen för bearbetning och produktion är sökvägen till filen som lagrar utdata.





De produktion argumentet är valfritt och kan hoppas över. Om en användare inte anger inmatningsfilen, tar uniq data från standardutmatningen som ingång. Detta gör att en användare kan pipa uniq med andra Linux -kommandon .

Exempel på textfil

Vi använder textfilen duplicate.txt som ingång för kommandot.





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.

Observera att vi redan har sorterat denna textfil med sortera kommando. Om du arbetar med någon annan textfil kan du sortera den med följande kommando:

sort filename.txt > sorted.txt

Ta bort dubbletter

Den mest grundläggande användningen av uniq är att ta bort upprepade strängar från inmatningen och skriva ut unika utdata.

uniq duplicate.txt

Produktion:

Observera att systemet inte visar den andra förekomsten av raden Detta är en textfil . Också det ovan nämnda kommandot skriver bara ut de unika raderna i filen och påverkar inte innehållet i den ursprungliga textfilen.

Räkna upprepade rader

För att mata ut antalet upprepade rader i en textfil, använd -c flagga med standardkommandot.

uniq -c duplicate.txt

Produktion:

Systemet visar antalet på varje rad som finns i textfilen. Du kan se att linjen Detta är en textfil förekommer två gånger i filen. Som standard är uniq-kommandot skiftlägeskänsligt.

Om du bara vill skriva ut dubbletter av textfilen använder du -D flagga. De -D står för Duplicera .

uniq -D duplicate.txt

Systemet visar utmatningen enligt följande.

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

Hoppa över fält medan du söker efter dubbletter

Om du vill hoppa över ett visst antal fält medan du matchar strängarna kan du använda -f flagga med kommandot. De -f står för Fält .

Tänk på följande textfil fields.txt .

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

För att hoppa över det första fältet:

uniq -f 1 fields.txt

Produktion:

192.168.0.1 TCP
Linux FS

Det ovannämnda kommandot hoppade över det första fältet (IP -adresserna och OS -namnen) och matchade det andra ordet (TCP och FS). Sedan visade det den första förekomsten av varje match som utdata.

Ignorera tecken vid jämförelse

Precis som att hoppa över fält kan du också hoppa över tecken. De -s flag kan du ange hur många tecken du vill hoppa över medan du matchar dubbletter. Den här funktionen hjälper när data du arbetar med är i form av en lista enligt följande:

var kan man få billiga datordelar
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

För att ignorera de två första tecknen (listnumren) i filen list.txt :

uniq -s 2 list.txt

Produktion:

I utdata ovan ignorerades de två första tecknen och resten av dem matchades för unika rader.

Kontrollera Första N Antal tecken efter dubbletter

De -i flag kan du bara kontrollera ett fast antal tecken för dubbletter. Till exempel:

uniq -w 2 duplicate.txt

Det ovannämnda kommandot matchar bara de två första tecknen och skriver ut eventuella unika rader.

Produktion:

Ta bort fallkänslighet

Som nämnts ovan är uniq skiftlägeskänsligt medan matchande rader i en fil. Om du vill ignorera bokstäverna använder du -i alternativ med kommandot.

uniq -i duplicate.txt

Du kommer att se följande utdata.

Observera i utdata ovan, uniq visade inte raderna FÅ DETTA och DETTA ÄR EN TEXTFIL .

Skicka utmatning till en fil

För att skicka utmatningen från uniq -kommandot till en fil kan du använda Omdirigering av utdata ( > ) tecken enligt följande:

uniq -i duplicate.txt > otherfile.txt

Medan en utmatning skickas till en textfil, visar systemet inte kommandot. Du kan kontrollera innehållet i den nya filen med katt kommando.

cat otherfile.txt

Du kan också använda andra sätt att skicka kommandoradsutmatning till en fil i Linux .

Analysera dubblettdata med uniq

För det mesta kommer du antingen att arbeta på terminalen eller redigera textfiler när du hanterar Linux -servrar. Att veta hur man tar bort överflödiga kopior av rader i en textfil kan därför vara en stor tillgång för din Linux -färdighetsuppsättning.

Att arbeta med textfiler kan vara frustrerande om du inte vet hur du filtrerar och sorterar text i en fil. För att göra ditt arbete enklare har Linux flera textredigerande kommandon som sed och ock som gör att du kan arbeta effektivt med textfiler och kommandoradsutgångar.

Dela med sig Dela med sig Tweet E-post Dessa 10 sed -exempel gör dig till en Linux Power -användare

Vill du bli en Linux -kraftanvändare? Att ta tag i sed kommer att hjälpa. Lär dig av dessa 10 sed exempel.

Läs Nästa
Relaterade ämnen
  • Linux
  • Linux
Om författaren Deepesh Sharma(79 artiklar publicerade)

Deepesh är Junior Editor för Linux på MUO. Han skriver informationsguider på Linux, i syfte att ge alla nykomlingar en lycklig upplevelse. Osäker på filmer, men om du vill prata om teknik är han din kille. På fritiden kan du hitta honom läsa böcker, lyssna på olika musikgenrer eller spela gitarr.

Mer från Deepesh Sharma

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera