Pipe, Grep og Sort Command i Linux/Unix med eksempler

⚡ Smart oppsummering

Pipe-, grep- og sort-kommandoer i Linux og Unix kjeder og filtrerer tekst: en pipe mater utdataene fra én kommando til den neste, grep søker etter mønstre og sort arrangerer linjer, mens filtre transformerer dataene mellom dem.

  • 🔗 Rør: Rørsymbolet | sender utdataene fra én kommando som input til den neste.
  • 📄 Personsøking: cat piped to less, pg, eller more viser en lang fil én skjerm om gangen.
  • 🔍 grep: Grep-kommandoen søker i en fil etter linjer som samsvarer med en streng eller et mønster.
  • 🎚️ grep-alternativer: Flagg som -v, -c, -n, -i og -l inverterer, teller, nummererer, ignorerer store og små bokstaver og list filer.
  • 🔤 sortere: Sort-kommandoen sorterer linjene i en fil, med -r, -n og -f for omvendt, numerisk og ufølsom for store og små bokstaver.
  • 🧪 Filtre: Filterkommandoer som grep, sort, awk, sed og wc behandler piped input og produserer output.
  • 🤖 AI-hjelp: AI-assistenter og GitHub Copilot kan bygge og forklare pipelines, grep og sorteringspipelines.

Pipe-, grep- og sort-kommandoer i Linux og Unix med eksempler

Pipes, grep og sort er blant de mest brukte verktøyene på Linux kommandolinjen, fordi de lar deg koble sammen små kommandoer til én kraftig arbeidsflyt. Denne siden forklarer hver enkelt med eksempler, og viser deretter hvordan filtre knytter dem sammen.

Hva er en pipe i Linux?

Pipe er en kommando i Linux som lar deg bruke to eller flere kommandoer slik at utdataene fra én kommando fungerer som input til den neste. Kort sagt, utdataene fra hver prosess mates direkte som input til den neste, som en pipeline. Symbolet '|' betegner en pipe.

Pipes hjelper deg med å blande to eller flere kommandoer samtidig og kjøre dem etter hverandre. Du kan bruke kraftige kommandoer som utfører komplekse oppgaver på et blunk.

La oss forstå dette med et eksempel.

Når du bruker kommandoen «cat» for å vise en fil som strekker seg over flere sider, hopper ledeteksten raskt til den siste siden i filen, og du ser ikke innholdet i midten.

For å unngå dette kan du sende utdataene fra «cat»-kommandoen til «less», som bare viser én rullelengde med innhold om gangen.

cat filename | less

En illustrasjon ville gjort det klart. Diagrammet nedenfor viser hvordan en pipe sender utdataene fra én kommando til den neste.

Diagram av et Linux-pipe som sender utdataene fra én kommando som input til den neste

'pg' og 'more' kommandoer

I stedet for «less» kan du også bruke pg eller more-kommandoen:

cat Filename | pg

or

cat Filename | more

Du kan deretter se filen i oversiktlige deler og bla nedover ved å trykke på enter-tasten. Skjermbildet nedenfor viser en fil som er åpnet med kommandoen «more».

katt sendt til more-kommandoen, og paginerer en lang fil én skjerm om gangen

'grep'-kommandoen

Anta at du vil søke etter bestemt informasjon, for eksempel et postnummer, i en tekstfil.

Du kan skumlese innholdet manuelt selv for å tracinformasjonen. Et bedre alternativ er å bruke grep kommandoen. Den skanner dokumentet for ønsket informasjon og presenterer resultatet i formatet du ønsker.

Syntaks:

grep search_string

La oss se det i aksjon. Skjermbildet nedenfor viser resultatet av søket.

grep-kommando søker i eksempelfilen etter strengene Apple og Eat

Her har grep-kommandoen søkt i filen «sample» etter strengene «Apple» og «Eat». Følgende alternativer kan brukes med denne kommandoen.

Alternativ Funksjon
-v Viser alle linjene som ikke samsvarer med den søkte strengen
-c Viser bare antallet samsvarende linjer
-n Viser den samsvarende linjen og nummeret
-i Matcher både store og små bokstaver
-l Viser bare navnet på filen med strengen

La oss prøve alternativet '-i' på den samme filen som ble brukt ovenfor. Skjermbildet nedenfor viser resultatet uten å skille mellom store og små bokstaver.

grep -i utfører et søk uten å skille mellom store og små bokstaver etter bokstaven a

Ved å bruke alternativet '-i' har grep filtrert strengen 'a' (ikke-skillende mellom store og små bokstaver) fra alle linjene.

'Sort'-kommandoen

Denne kommandoen hjelper med å sortere innholdet i en fil alfabetisk.

Syntaksen for denne kommandoen er:

sort Filename

Tenk på innholdet i en fil, vist med katt nedenfor.

cat-kommandoen som viser det usorterte innholdet i filen abc

Når du kjører sorteringskommandoen, ordnes linjene i alfabetisk rekkefølge, som vist nedenfor.

sorteringskommandoen ordner innholdet i filen abc i alfabetisk rekkefølge

Det finnes også utvidelser til denne kommandoen, og de er listet opp nedenfor.

Alternativ Funksjon
-r Reversesortering
-n Sorterer numerisk
-f Sortering uten å skille mellom store og små bokstaver

Eksemplet nedenfor viser omvendt sortering av innholdet i filen 'abc'.

sort -r-kommandoen omvendt sortering av innholdet i filen abc

Hva er et filter?

Linux har mange filterkommandoer som awk, grep, sed, spell og wc. Et filter tar input fra én kommando, utfører noe behandling og gir output.

Når du sender to kommandoer, blir den «filtrerte» utdataene fra den første kommandoen gitt til den neste. Diagrammet nedenfor illustrerer hvordan et filter passer inn i en pipeline.

Diagram av et Linux-filter som tar piped input, behandler det og produserer output

La oss forstå dette ved hjelp av et eksempel. Vi har følgende fil 'eksempel', vist med cat nedenfor.

cat-kommandoen viser innholdet i eksempelfilen før filtrering

Vi ønsker å markere bare linjene som ikke inneholder tegnet 'a', men resultatet skal være i omvendt rekkefølge. For dette kan følgende syntaks brukes:

cat sample | grep -v a | sort -r

La oss se på resultatet, vist på skjermbildet nedenfor.

cat sendte gjennom grep -v og sort -r, noe som produserte omvendt ordnede linjer uten bokstaven a

Spørsmål og svar

En pipe (|) sender utdataene fra én kommando rett inn i en annen kommando, og kjeder dem sammen. Omdirigering (> og <) kobler en kommando til en fil i stedet, og skriver utdata til en fil eller leser inndata fra en. Pipes kobler kommandoer; omdirigering kobler kommandoer og filer.

grep står for Global Regular Expression Print. Den skanner en fil eller inndata linje for linje og skriver ut hver linje som samsvarer med mønsteret du gir den. Navnet kommer fra den gamle ed-editorkommandoen g/re/p, som utførte det samme søket.

Sort-kommandoen har et -u-alternativ som sorterer og fjerner duplikater i ett trinn: sort -u file. Du kan også legge inn sort i uniq, som i sort file | uniq, siden uniq bare fjerner duplikater som allerede er tilstøtende.

Avslutt pipelinen med omdirigering: cat sample | grep -va | sort -r > result.txt skriver den endelige utdataen til en fil. For å se utdataene på skjermen og lagre dem samtidig, skriv inn i tee-kommandoen i stedet.

grep søker i filer etter linjer som samsvarer med et tekstmønster. find-kommandoen finner filer og mapper etter navn, størrelse, type eller dato. Kort sagt ser grep på filinnhold, mens find ser etter filer i mappetreet.

tee-kommandoen leser fra en pipe og skriver dataene til både skjermen og én eller flere filer samtidig, for eksempel grep error log | tee errors.txt. Den lar deg lagre mellomliggende utdata uten å ødelegge pipelinen.

AI-assistenter kan foreslå riktig kjede av pipede kommandoer fra en forespørsel på vanlig engelsk, forklare ukjente grep- eller sorteringsflagg, og oppdage feil i en pipeline. Maskinlæringsverktøy skanner også piped log-utdata for å flagge avvik som manuell filtrering ville overse.

Ja. GitHub Copilot kan generere pipelines som kombinerer cat, grep og sort fra en kort kommentar som beskriver hva du trenger, og fullføre kommandoer mens du skriver. RevVis eventuelle foreslåtte pipelines mot eksempeldata, spesielt alternativer som endrer rekkefølgen på eller sletter linjer.

Oppsummer dette innlegget med: