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:
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.
Skriv endast ut upprepade rader
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:
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.
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
