I denne artikel vil vi forklare brugen af grep-værktøjet med forskellige eksempler. Vi bruger Debian 10 til at forklare de kommandoer og metoder, der er nævnt i denne artikel.
Installation af Grep
Grep kommer installeret i de fleste Linux-distributioner. Men hvis det mangler på dit system, kan du installere det ved hjælp af følgende metode i Terminal:
$ sudo apt-get install grepBrug af Grep
Her er den grundlæggende syntaks for grep-kommandoen. Det starter med grep efterfulgt af nogle muligheder og søgekriterier og slutter derefter med filnavnet.
$ grep [optioner] MØNSTER [FIL ...]Søg efter filer
For at søge efter et filnavn i et bibliotek, der indeholder en bestemt streng i det, kan du bruge grep på følgende måde:
$ ls -l | grep -i “strengFor eksempel at søge efter et filnavn, der indeholder en streng “prøve“, Kommandoen ville være:
$ ls -l | grep -i testDenne kommando viser alle de filer, der indeholder strengen “prøve”.
Søg efter en streng i en fil
For at søge efter en streng i en bestemt fil kan du bruge følgende kommandosyntaks:
$ grep "streng" filnavnFor eksempel at søge efter en streng “prøve”I en fil med navnet testfil1, vi har brugt følgende kommando:
$ grep “medarbejder” testfil1
Ovenstående output har returneret sætningen fra testfil1 der indeholder strengen “medarbejder”.
Søg efter en streng i flere filer
For at søge efter en streng i flere filer kan du bruge følgende kommandosyntaks:
$ grep “streng” filnavn1 filnavn2For eksempel for at søge efter en streng "medarbejder" i vores to filer testfile1 og testfile2 har vi brugt følgende kommando:
$ grep “medarbejder” testfil1 testfil2
Ovenstående kommando viser alle linjer, der indeholder strengen "medarbejder" fra begge filer testfil1 og testfil2.
Du kan også bruge et jokertegn, hvis alle filnavne begynder med den samme tekst.
$ grep "streng" filnavn *Ligesom hvis vi tager ovenstående eksempel, hvor vores filnavne var testfil1 og testfil2 , kommandoen ville være:
$ grep “medarbejder” testfil *
Søg efter en streng i en fil ved at ignorere strengens sag
Oftest har du stødt på det, når du søger efter noget ved hjælp af grep, men ikke modtager en output. Dette sker på grund af uoverensstemmelse mellem sager, når du søger efter en streng. Som i vores eksempel, hvis vi fejlagtigt bruger “Medarbejder" i stedet for "medarbejder”, Den returnerer nul, da vores fil indeholder strengen“medarbejder”Med små bogstaver.
Du kan bede grep om at ignorere tilfældet med søgestreng ved at bruge -i-flag efter grep som følger:
$ grep -i "streng" filnavn
Ved at bruge -i-flaget udfører kommandoen den ufølsomme søgning efter store bogstaver og returnerer alle linjer, der indeholder strengen “medarbejder”I det uden at tage højde for, bogstaverne er med store eller små bogstaver.
Søg ved hjælp af det regulære udtryk
Hvis det bruges korrekt, er det regulære udtryk en meget effektiv funktion i grep. Med kommandoen Grep kan du definere et regulært udtryk med et start- og slutord. Ved at gøre dette behøver du ikke skrive hele linjen med grep-kommandoen. Følgende syntaks kan bruges til dette formål.
$ grep “start nøgleord.* endingKeyword ”filnavnFor eksempel for at søge efter en linje i en fil med navnet testfil1, der starter med strengen "dette" og slutter med strengen "data", har vi brugt følgende kommando:
$ grep “dette.* data ”testfil1
Det udskriver hele linjen fra testfil1 indeholdende udtrykket (startord "dette" og slutordet "data").
Udskriv bestemt antal linjer efter / før søgestrengen
Du kan også vise det specifikke antal linjer i en fil før / efter en strengkamp sammen med selve den matchede streng. Følgende syntaks kan bruges til dette formål:
$ grep -ADet viser N antal linjer, efter at strengen er matchet i den angivne fil inklusive den matchede streng.
For eksempel er dette vores eksempelfil med navnet testfil2.
Den følgende kommando udsender den matchede linje, der indeholder strengen “medarbejder”, Sammen med de 2 linjer efter det.
$ grep -A 2 -i “medarbejder” testfil2
På samme måde skal du bruge følgende syntaks for at få vist N antal linjer før den matchede streng i en bestemt fil:
$ grep -BFor at få vist N antal linjer omkring strengen i en bestemt fil skal du bruge følgende syntaks:
$ grep -CFremhæv søgningen
Grep udskriver som standard matchede linjer, men viser ikke, hvilken del af linjen der er matchet. Hvis du bruger -color option med grep, vil det vise, hvor bearbejdningsstrengene vises i din fil. Grep bruger som standard den røde farve til fremhævning.
Følgende syntaks kan bruges til dette formål:
$ grep "streng" filnavn - farve
Tæller antallet af kampe
Hvis du vil tælle, hvor mange gange et bestemt ord vises i en bestemt fil, kan du bruge grep med -c-indstillingen. Det returnerer kun antallet af kampe i stedet for selve kampene. Følgende syntaks kan bruges til dette formål:
$ grep -c "streng" filnavnDette er vores eksempelfil, der ser ud:
Følgende er et eksempel på en kommando, der returnerede antallet af gange ordet fil dukkede op i en fil med navnet testfil3.
Inverteret søgning
Nogle gange vil du udføre en omvendt søgning, der viser alle linjer undtagen de, der matchede input. For at gøre det skal du blot bruge -v-flag efterfulgt af grep:
$ grep -v "streng" filnavnFor eksempel at vise alle linjerne i en fil testfil3 der ikke indeholder ordet "konto" i dem, har vi brugt følgende kommando:
$ grep -v "konto" testfil3
Brug af Grep med andre kommandoer
Grep kan også bruges til at filtrere det krævede resultat fra forskellige kommandoutput. For eksempel fra “apt-installeret liste ” kommandoutput, du vil kun finde de pakker, der blev installeret automatisk, du kan filtrere resultatet ud ved hjælp af grep som følger:
$ apt - installeret liste | grep automatisk
På samme måde giver lscpu detaljerede oplysninger om CPU'en. Hvis du bare er interesseret i oplysningerne om CPU-arkitekturen, kan du filtrere dem ud ved hjælp af følgende kommando:
$ lscpu | grep Arkitektur
I denne artikel har vi beskrevet nogle eksempler, der hjælper dig med at forstå grep-kommandoerne og dens anvendelse under forskellige forhold. At have et stærkt greb om grep-kommandoen kan spare meget tid, hvis du har brug for at se på store konfigurationer eller logfiler og skimme nyttige oplysninger igennem dem.