Linux-kommandoer

Linux uniq-kommando

Linux uniq-kommando
Hva er "uniq"? Det er et flott kommandolinjeverktøy som vil rapportere eller utelate duplikattekst i den gitte inngangen. Det er en del av GNU coreutils og så, tilgjengelig på hvert eneste UNIX / Linux-system der ute. La oss komme i gang med “uniq”!

Uniq bruk

Slik ser basestrukturen til “uniq” -kommandoer ut.

uniq

La oss for eksempel sjekke ut innholdet i “duplisere.tekst". Selvfølgelig inneholder den mye duplisert tekstinnhold for formålet med denne artikkelen.

katt duplikat.txt | sortere

Det er tydelig duplisert innhold, ikke sant? La oss filtrere dem gjennom "uniq".

katt duplikat | sorter | uniq

Resultatet ser så bedre ut med bare de unike verdiene, ikke sant?

Imidlertid trenger du bare ikke å bruke rørmetoden for å gjøre jobben. “Uniq” kan også fungere direkte på filene.

uniq

Slette duplisert innhold

Ja, å slette det dupliserte innholdet fra inngangen og bare beholde den første forekomsten er standard oppførsel til "uniq". Merk at denne dupliserte slettingen bare skjer når “uniq” finner samtidige duplikatelementer.

La oss sjekke ut dette eksemplet. Jeg har opprettet en annen “duplikat1”.txt ”-fil som inneholder dupliserte elementer. Imidlertid er de ikke ved siden av hverandre.

flaggermus duplikat1.tekst

Filtrer nå denne utgangen med "uniq".

katt duplikat1.txt | uniq

Alt duplikatinnholdet er der! Det er derfor, hvis du jobber med noe som ligner på dette, rør innholdet gjennom "sorter" for å sikre at alt innholdet er sortert og duplikater ligger ved siden av hverandre.

katt duplikat1.txt | sortere

Nå vil “uniq” gjøre jobben sin normalt.

katt duplikat1.txt | sorter | uniq

Antall repetisjoner

Hvis du vil, kan du sjekke ut hvor mange ganger en linje gjentas i innholdet. Bare bruk “-c” -flagget med “uniq”.

katt duplikat.txt | sorter | uniq -c

Merk: “uniq” vil også gjøre sin vanlige jobb med å slette duplikatene.

Skrive ut duplikatlinjer

De fleste ganger vil vi bli kvitt duplikatene, ikke sant? Denne gangen, hva med å bare sjekke hva som er duplikat?

Ja, "uniq" er også i stand til å gjøre det. I dette tilfellet må du bruke alternativet “-D”. Jeg bruker "sorter" i mellom for å få et bedre, mer raffinert resultat.

katt duplikat.txt | sorter | uniq -D

WOW! Det er MYE duplikater! Imidlertid er alle duplikater gruppert sammen, noe som gjør det vanskelig å navigere gjennom. Hva med å legge til et lite gap mellom?

uniq - all-repeat =

Her er det tre forskjellige metoder tilgjengelige: ingen (standardverdi), forhåndsavhengig og separat.

katt duplikat.txt | sorter | uniq - alt-gjentatt = avhengig

katt duplikat.txt | sorter | uniq - all-repeat = separate

Nå ser det bedre ut.

Hopp over unikhetskontroll

I mange tilfeller må det unike kontrolleres av en annen del av linjen.

La oss forstå dette ved eksempel. I fil duplikat1.txt, la oss si at dupliseringen bestemmes av andre del. Hvordan forteller du “uniq” å gjøre det? Generelt ser det etter det første feltet (som standard). Vel, vi kan også gjøre det også. Det er dette “-f” -flagget som bare gjør jobben.

uniq -f
katt duplikat1.txt | sorter -k 2 | uniq -f 1

Hvis du lurer på med "sorter" -flagget, er det å fortelle "sorter" å sortere basert på den andre kolonnen.

Vis alle linjer, men separate duplikater

I henhold til alle eksemplene nevnt ovenfor beholder "uniq" bare den første forekomsten av det dupliserte innholdet og fjerner resten. Hva med å fjerne det dupliserte innholdet helt? Ja, ved å bruke flagget “-u” kan vi tvinge “uniq” til å beholde de ikke-repeterende linjene.

katt duplikat.txt | sortere

katt duplikat.txt | sorter | uniq -u

Hmm, for mange duplikater er nå borte ..

Hopp over første tegn

Vi diskuterte hvordan vi kan si til “uniq” å gjøre jobben sin for andre felt, ikke sant? Det er på tide å starte sjekken etter en rekke innledende tegn. For dette formålet vil “-s” -flagget ledsaget av antall tegn fortelle “uniq” å gjøre jobben.

katt duplikat1.txt | sorter -k 2 | uniq -s 2

Det ligner på eksemplet der “uniq” bare skulle utføre sin oppgave i det andre feltet. La oss se et annet eksempel med dette trikset.

katt duplikat.txt | sorter | uniq -s 5

Kontroller KUN innledende tegn

Akkurat som måten vi ba "uniq" om å hoppe over første par tegn, er det også mulig å fortelle "uniq" for å bare begrense kontrollen i de første par tegnene. Det er et dedikert “-w” -flagg for dette formålet.

katt duplikat.txt | sorter | uniq -w 5

Denne kommandoen forteller "uniq" om å utføre unikhetskontroll innen de fem første tegnene.

La oss se et annet eksempel på denne kommandoen.

katt duplikat1.txt | sorter | uniq -w 5

Det utsletter alle andre forekomster av "dupliserte" oppføringer fordi det gjorde det unike ved "dupli" -delen.

Tilfelle ufølsomhet

Når du ser etter unikhet, kontrollerer “uniq” også for tegnene. I noen situasjoner har ikke store og små bokstaver ingen betydning, så vi kan bruke flagget “-i” for å gjøre “uniq” ufølsom.

Her presenterer jeg deg demofilen.

Noen veldig smarte dupliseringer med en blanding av store og små bokstaver, ikke sant? Det er på tide å påkalle styrken til “uniq” for å rense rotet!

katt duplikat1.txt | sorter | uniq -i

Ønske oppfylt!

NULL-avsluttet produksjon

Standard oppførselen til "uniq" er å avslutte utdataene med en ny linje. Imidlertid kan produksjonen også avsluttes med en NULL. Det er ganske nyttig hvis du skal bruke det i skript. Her er flagget “-z” det som gjør jobben.

katt duplikat.txt | sorter | uniq -z

Kombinere flere flagg

Vi lærte en rekke flagg av “uniq”, ikke sant? Hva med å kombinere dem sammen?

For eksempel kombinerer jeg saksfølsomhet og antall repetisjoner sammen.

Hvis du noen gang planlegger å blande flere flagg sammen, må du først sørge for at de fungerer riktig sammen. Noen ganger fungerer ting bare ikke som de skal.

Siste tanker

“Uniq” er et ganske unikt verktøy som Linux tilbyr. Med så mye kraftige funksjoner kan det være nyttig på mange måter. For listen over alle flaggene og deres forklaringer, se mann- og infosidene til “uniq”.

mann uniq

info uniq

Nyt!

Åpne kildeporter for kommersielle spillmotorer
Gratis, åpen kildekode og plattformspillmotorrekreasjoner kan brukes til å spille gamle så vel som noen av de ganske nylige spilletitlene. Denne artik...
Beste kommandolinjespill for Linux
Kommandolinjen er ikke bare din største allierte når du bruker Linux, den kan også være kilden til underholdning fordi du kan bruke den til å spille m...
Beste Gamepad Mapping Apps for Linux
Hvis du liker å spille spill på Linux med en gamepad i stedet for et vanlig tastatur- og musinngangssystem, er det noen nyttige apper for deg. Mange P...