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

โšก Smart opsummering

Pipe-, grep- og sort-kommandoer i Linux og Unix kรฆder og filtrerer tekst: en pipe fรธrer outputtet fra รฉn kommando til den nรฆste, grep sรธger efter mรธnstre, og sort arrangerer linjer, mens filtre transformerer dataene mellem dem.

  • ๐Ÿ”— Rรธr: Pipe-symbolet | sender outputtet fra รฉn kommando som input til den nรฆste.
  • ๐Ÿ“„ Personsรธgning: kat pipet til mindre, pg eller mere viser en lang fil รฉn skรฆrm ad gangen.
  • ๐Ÿ” grep: Grep-kommandoen sรธger i en fil efter linjer, der matcher en streng eller et mรธnster.
  • ๐ŸŽš๏ธ grep-muligheder: Flag som -v, -c, -n, -i og -l inverterer, tรฆller, nummererer, ignorerer store og smรฅ filer og viser filer.
  • ๐Ÿ”ค sortere: Sort-kommandoen sorterer en fils linjer med -r, -n og -f for omvendt, numerisk og ufรธlsom over for store og smรฅ bogstaver.
  • ๐Ÿงช Filtre: Filterkommandoer som grep, sort, awk, sed og wc behandler piped input og producerer output.
  • ๐Ÿค– AI-hjรฆlp: AI-assistenter og GitHub Copilot kan bygge og forklare pipe-, grep- og sorteringspipelines.

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

Pipes, grep og sort er blandt de mest brugte vรฆrktรธjer pรฅ Linux kommandolinjen, fordi de lader dig forbinde smรฅ kommandoer til รฉn effektiv arbejdsgang. Denne side forklarer hver enkelt med eksempler og viser derefter, hvordan filtre binder dem sammen.

Hvad er et rรธr i Linux?

Pipe er en kommando i Linux, der lader dig bruge to eller flere kommandoer, sรฅledes at outputtet fra รฉn kommando fungerer som input til den nรฆste. Kort sagt, outputtet fra hver proces sendes direkte som input til den nรฆste, ligesom en pipeline. Symbolet '|' betegner en pipe.

Pipes hjรฆlper dig med at blande to eller flere kommandoer pรฅ samme tid og kรธre dem efter hinanden. Du kan bruge kraftfulde kommandoer, der udfรธrer komplekse opgaver pรฅ et รธjeblik.

Lad os forstรฅ dette med et eksempel.

Nรฅr du bruger kommandoen 'cat' til at se en fil, der strรฆkker sig over flere sider, hopper prompten hurtigt til den sidste side i filen, og du ser ikke indholdet i midten.

For at undgรฅ dette kan du overfรธre outputtet fra kommandoen 'cat' til 'less', hvilket kun viser dig รฉn scroll-lรฆngde af indhold ad gangen.

cat filename | less

En illustration ville gรธre det klart. Diagrammet nedenfor viser, hvordan en pipe sender outputtet fra รฉn kommando til den nรฆste.

Diagram over et Linux-pipe, der sender outputtet fra รฉn kommando som input til den nรฆste

'pg' og 'more' kommandoer

I stedet for 'less' kan du ogsรฅ bruge kommandoen pg eller more:

cat Filename | pg

or

cat Filename | more

Du kan derefter se filen i overskuelige dele og rulle ned ved blot at trykke pรฅ Enter-tasten. Skรฆrmbilledet nedenfor viser en fil, der er รฅbnet med kommandoen "more".

kat sendt til kommandoen more, der paginerer en lang fil รฉn skรฆrm ad gangen

Kommandoen 'grep'

Forestil dig, at du vil sรธge efter bestemte oplysninger, f.eks. et postnummer, i en tekstfil.

Du kan selv skimme indholdet manuelt for at trace informationen. En bedre mulighed er at bruge grep kommandoen. Den scanner dokumentet for de รธnskede oplysninger og prรฆsenterer resultatet i det รธnskede format.

Syntaks:

grep search_string

Lad os se det i aktion. Skรฆrmbilledet nedenfor viser resultatet af sรธgningen.

grep-kommando sรธger i eksempelfilen efter strengene Apple og Eat

Her har grep-kommandoen sรธgt i filen 'sample' efter strengene 'Apple' og 'Eat'. Fรธlgende indstillinger kan bruges med denne kommando.

Option Funktion
-v Viser alle de linjer, der ikke matcher den sรธgte streng
-c Viser kun antallet af matchende linjer
-n Viser den matchende linje og dens nummer
-i Matcher bรฅde store og smรฅ bogstaver
-l Viser kun navnet pรฅ filen med strengen

Lad os prรธve '-i'-funktionen pรฅ den samme fil, som blev brugt ovenfor. Skรฆrmbilledet nedenfor viser resultatet, der ikke skelner mellem store og smรฅ bogstaver.

grep -i udfรธrer en sรธgning efter bogstavet a, der ikke skelner mellem store og smรฅ bogstaver

Ved at bruge '-i'-funktionen har grep filtreret strengen 'a' (ikke-sanskel) fra alle linjerne.

Kommandoen 'sort'

Denne kommando hjรฆlper med at sortere indholdet af en fil alfabetisk.

Syntaksen for denne kommando er:

sort Filename

Overvej indholdet af en fil, vist med cat nedenfor.

cat-kommandoen viser det usorterede indhold af filen abc

Ved at kรธre sorteringskommandoen arrangeres disse linjer i alfabetisk rรฆkkefรธlge, som vist nedenfor.

sorteringskommandoen arrangerer indholdet af filen abc i alfabetisk rรฆkkefรธlge

Der er ogsรฅ udvidelser til denne kommando, og de er anfรธrt nedenfor.

Option Funktion
-r Reversesortering
-n Sorterer numerisk
-f Sortering uden forskel pรฅ store og smรฅ bogstaver

Eksemplet nedenfor viser omvendt sortering af indholdet i filen 'abc'.

sort -r kommando omvendt sortering af indholdet af filen abc

Hvad er et filter?

Linux har mange filterkommandoer sรฅsom awk, grep, sed, spell og wc. Et filter tager input fra รฉn kommando, udfรธrer noget behandling og giver output.

Nรฅr du piper to kommandoer, gives det 'filtrerede' output fra den fรธrste kommando til den nรฆste. Diagrammet nedenfor illustrerer, hvordan et filter passer ind i en pipeline.

Diagram over et Linux-filter, der tager piped input, behandler det og producerer output

Lad os forstรฅ dette ved hjรฆlp af et eksempel. Vi har fรธlgende fil 'eksempel', vist med cat nedenfor.

cat-kommandoen viser indholdet af eksempelfilen fรธr filtrering

Vi รธnsker kun at fremhรฆve de linjer, der ikke indeholder tegnet 'a', men resultatet skal vรฆre i omvendt rรฆkkefรธlge. Til dette kan fรธlgende syntaks bruges:

cat sample | grep -v a | sort -r

Lad os se pรฅ resultatet, vist pรฅ skรฆrmbilledet nedenfor.

cat sendte via grep -v og sort -r, hvilket producerede omvendt ordnede linjer uden bogstavet a

Ofte Stillede Spรธrgsmรฅl

En pipe (|) sender outputtet fra รฉn kommando direkte til en anden kommando og kรฆder dem sammen. Omdirigering (> og <) forbinder i stedet en kommando til en fil, hvor output skrives til en fil eller input lรฆses fra en. Pipes forbinder kommandoer; omdirigering forbinder kommandoer og filer.

grep stรฅr for Global Regular Expression Print. Den scanner en fil eller et input linje for linje og udskriver hver linje, der matcher det mรธnster, du giver den. Navnet stammer fra den gamle ed-editorkommando g/re/p, som udfรธrte den samme sรธgning.

Kommandoen sortering har en -u-indstilling, der sorterer og fjerner dubletter i รฉt trin: sort -u file. Du kan ogsรฅ overfรธre sortering til uniq, som i sort file | uniq, da uniq kun fjerner dubletter, der allerede er tilstรธdende.

Afslut pipelinen med omdirigering: cat sample | grep -va | sort -r > result.txt skriver det endelige output til en fil. For at se outputtet pรฅ skรฆrmen og gemme det samtidig, skal du i stedet skrive `pipe` ind i `tee`-kommandoen.

grep sรธger i filer efter linjer, der matcher et tekstmรธnster. Kommandoen find finder filer og mapper efter navn, stรธrrelse, type eller dato. Kort sagt kigger grep pรฅ filindhold, mens find sรธger efter filer i mappetrรฆet.

Kommandoen tee lรฆser fra en pipe og skriver dataene til bรฅde skรฆrmen og en eller flere filer pรฅ รฉn gang, for eksempel grep error log | tee errors.txt. Den lader dig gemme mellemliggende output uden at afbryde pipelinen.

AI-assistenter kan foreslรฅ den rigtige kรฆde af pipede kommandoer fra en almindelig engelsk anmodning, forklare ukendte grep- eller sorteringsflag og finde fejl i en pipeline. Maskinlรฆringsvรฆrktรธjer scanner ogsรฅ piped log-output for at markere anomalier, som manuel filtrering ville overse.

Ja. GitHub Copilot kan generere pipelines, der kombinerer cat, grep og sort ud fra en kort kommentar, der beskriver, hvad du har brug for, og fuldfรธre kommandoer, mens du skriver. RevSe enhver foreslรฅet pipeline mod eksempeldata, isรฆr muligheder der omarrangerer eller sletter linjer.

Opsummer dette indlรฆg med: