Der er en klassisk smule computer visdom, der siger "Hvis du har et problem, og beslutter at løse det med regulære udtryk, har du nu to problemer." Dette skyldes selvfølgelig ud fra den opfattelse, at regulære udtryk er en kompliceret blanding af magiske figurer og Voodoo. Regelmæssige udtryk kan give dig mulighed for hurtigt og nemt at opnå elegant og præcis programlogik, men kun når du har lært at forstå, hvordan de virker og hvorfor. Næsten ethvert Linux eller Mac-system leveres med et kraftfuldt regex værktøjsopkald grep, og learning grep er en vigtig opgave for enhver strømbruger eller systemadministrator. I dag vil vi udforske nogle af hvad du kan gøre med grep og hvordan det kan være et af de mest kraftfulde værktøjer i din nørd arsenal.

Hvordan det virker

Kort sagt, Greps job er at søge gennem en blok af input. Det er ret vagt, så det bedst beskrives af eksempel. Lad os sige, at du har en tekstfil kaldet distros.txt, der har en liste over Linux-distributioner, som den nedenfor.

Debian - Stabil serverfordeling
Ubuntu - Desktop distro oprindeligt baseret på Debian
Kubuntu - Bruger KDE-skrivebordet i stedet for Gnome
Fedora - Fortsættelse af det gratis Red Hat desktop system
Gentoo - Et hurtigt, kildebaseret Linux-system til pro brugere
SuSE - Commercial Linux ejet af Novell
Mint - Ubuntu-afledt distro med ekstra begrænset software

Grep kan bruges til at læse teksten og filtrere den for kun at vise de dele, du ønsker. Hvis du kun vil se linjerne, der indeholder ordet "Ubuntu", vil du køre følgende kommando:

 grep Ubuntu distros.txt 

(Din version af grep kan eller måske ikke indeholde farvefremhævning som i eksemplet ovenfor)

Case Sensitivity

Du har muligvis bemærket, at vores sidste søgning ikke returnerede Kubuntu. Medmindre andet er angivet, vil grep antage, at du indtastede dit udtryk præcis som du ønskede det, og det gælder både store og små bogstaver. Hvis du søger efter "ubuntu", men din tekstfil indeholder "Ubuntu", vil din søgning ikke finde noget. For at gøre din søgning tilfældig ufølsom, brug -i- knappen, som i

 grep -i ubuntu distros.txt 

Hele ord

Med den forrige søgning inkluderede du alle aktiveringsvarianter af ordet "Ubuntu". Det omfattede Kubuntu, fordi det indeholder ordet du søgte efter. Du vil måske kun inkludere standardversionen, ikke Kubuntu eller Edubuntu osv. Hvis det er tilfældet, kan du fortælle grep om at matche hele ordet kun ved at sende -w- indstillingen.

 grep -i ubuntu distros.txt 

Undtagelse

Meget som du kan bruge grep til kun at vise matchende poster, kan du også bruge den til at vise alt men de tilsvarende poster. For at udvide vores tidligere søgninger kan vi nu bruge -v- indstillingen til at vende vores resultater og kun vise de linjer, der ikke stemmer overens.

Wildcards

Grep har fuld støtte til jokertegn ved matchende mønstre. Når du bruger jokertegn og andre specialtegn, vil du sørge for, at dit søgemønster er i citater, så Linux-skalen ikke forsøger at fortolke dem før grep can. Fælles jokertegn omfatter * for grupper af tegn og. at repræsentere en enkelt ukendt karakter.

Ranges

Hvis jokertegnene er lidt for brede til dig, kan du angive individuelle tegn eller en rækkevidde, der skal inkluderes i din søgning. Tegn i firkantede parenteser vil blive inkluderet i dit søge mønster. For eksempel, hvis du havde en fil med en liste som f.eks

 Punkt 1 - Æbler Punkt 2 - Bananer Punkt 3 - Kokosnødder Punkt 4 - Ferskner Punkt 5 - Druer Punkt 6 - Abrikoser 

Du kan vælge et bestemt interval ved at bruge noget som

 grep "vare [2-4]" items.txt 

Grep er et uhyre kraftfuldt værktøj, og at lære det grundigt kan betale sig på alle måder. Forståelse grep gør det også meget nemmere at gå videre til andre kraftfulde konsolværktøjer som sed og awk. Mellem disse tre værktøjer kan en fantastisk mængde konsol og script magi gøres med langt mindre indsats end synes muligt. Hvis du er fan af grep, eller vil gerne se andre værktøjer som sed og awk dækket her, så slip en note i kommentarerne.