Nyheter i Android, Telefoner, Prylar Och Recensioner

Hur man hittar dubbletter av data i en Linux-textfil med uniq

Har du någonsin stött på textfiler med upprepade rader och dubbletter av ord? Kanske arbetar du regelbundet med kommandoutdata och vill filtrera dem för distinkta strängar. När det kommer till textfiler och borttagning av överflödiga data i Linux, är uniq-kommandot ditt bästa val.

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

Vad är det unika kommandot?

Uniq-kommandot i Linux används för att visa identiska rader i en textfil. Det här kommandot kan vara användbart om du vill ta bort dubbletter av ord eller strängar från en textfil. Eftersom uniq-kommandot matchar intilliggande rader för att hitta redundanta kopior, fungerar det bara med sorterade textfiler.

Lyckligtvis kan du röra 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 dubbletter av rader i en textfil.

Hur man använder kommandot uniq

Det finns olika alternativ och flaggor som du kan använda med uniq. Vissa 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

Den grundläggande syntaxen för uniq-kommandot är:

uniq option input output

…var alternativ är flaggan som används för att anropa specifika metoder för kommandot, inmatning är textfilen för bearbetning, och produktion är sökvägen till filen som kommer att lagra utdata.

De produktion argument är valfritt och kan hoppas över. Om en användare inte anger indatafilen tar uniq data från standardutgången som indata. Detta tillåter en användare att pipe uniq med andra Linux-kommandon.

Exempel på textfil

Vi kommer att använda textfilen duplicate.txt som indata 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 hjälp av 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 av linjer

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:

Relaterad  Synology presenterar SATA SSD SAT5210 med kapaciteter upp till 3,84 TB

Observera att systemet inte visar den andra förekomsten av raden Detta är en textfil. Dessutom skriver det ovannämnda kommandot 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 för 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.

För att endast skriva ut dubbletter från textfilen, använd -D flagga. De -D står för Duplicera.

uniq -D duplicate.txt

Systemet kommer att visa utdata enligt följande.

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

Hoppa över fält när du letar efter dubbletter

Om du vill hoppa över ett visst antal fält samtidigt som 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

Så här hoppar du ö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 den den första förekomsten av varje matchning som utdata.

Ignorera tecken när du jämför

Precis som att hoppa över fält kan du hoppa över tecken också. De -s flaggan låter dig ange antalet tecken som ska hoppa över medan du matchar dubblettrader. Den här funktionen hjälper när data du arbetar med är i form av en lista enligt följande:

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 (listnumreringarna) i filen list.txt:

uniq -s 2 list.txt

Produktion:

Relaterad  Typer av innehåll i sociala medier: konceptuell översikt

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

Kontrollera första N Antal tecken för dubbletter

De -w flaggan låter dig kontrollera endast ett fast antal tecken för dubbletter. Till exempel:

uniq -w 2 duplicate.txt

Det ovannämnda kommandot kommer bara att matcha de två första tecknen och kommer att skriva ut unika rader om några.

Produktion:

Ta bort skiftlägeskänslighet

Som nämnts ovan är uniq skiftlägeskänslig medan den matchar rader i en fil. För att ignorera skiftläge, använd -jag alternativet med kommandot.

uniq -i duplicate.txt

Du kommer att se följande utdata.

Observera i utgången ovan, uniq visade inte raderna FÅNGA DET HÄR och DETTA ÄR EN TEXTFIL.

Skicka utdata till en fil

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

uniq -i duplicate.txt > otherfile.txt

När en utdata skickas till en textfil visar systemet inte utdata från kommandot. Du kan kontrollera innehållet i den nya filen med hjälp av katt kommando.

cat otherfile.txt

Du kan också använda andra sätt för att skicka kommandoradsutdata till en fil i Linux.

Analysera dubbletter av data med uniq

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

Att arbeta med textfiler kan vara frustrerande om du inte vet hur man filtrerar och sorterar text i en fil. För att göra ditt arbete enklare har Linux flera textredigeringskommandon som t.ex sed och awk som låter dig arbeta effektivt med textfiler och kommandoradsutdata.

Relaterad  Hur fungerar en kamera? - Nyheter i Android, Telefoner, Prylar Och Recensioner

Om författaren

Deepesh Sharma (110 publicerade artiklar)

Deepesh är Junior Editor för Linux på MUO. Han skriver informationsguider om Linux, i syfte att ge alla nykomlingar en lycksalig upplevelse. Inte säker på filmer, men om du vill prata om teknik är han din kille.

Mer från Deepesh Sharma

Prenumerera på vårt nyhetsbrev

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

Klicka här för att prenumerera