Grep -kommando i Linux

Grep Command Linux



Grep (global regular expression print) kommando er det mest kraftfulde og regelmæssigt anvendte Linux kommandolinjeværktøj. Ved hjælp af Grep kan du søge efter nyttige oplysninger ved at angive et søgekriterium. Den søger efter et bestemt udtryksmønster i en bestemt fil. Når det finder et match, udskriver det alle linjerne i en fil, der matchede det angivne mønster. Det er praktisk, når du skal filtrere gennem store logfiler.

I denne artikel vil vi forklare brugen af ​​grep utility med forskellige eksempler. Vi vil bruge Debian 10 til at forklare 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 fra dit system, kan du installere det ved hjælp af følgende metode i Terminal:



$sudo apt-get install greb

Brug af Grep

Her er den grundlæggende syntaks for grep -kommando. Det starter med grep efterfulgt af nogle muligheder og søgekriterier og slutter derefter med filnavnet.



$greb [muligheder]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 -det | greb -jegsnor

For eksempel at søge efter et filnavn, der indeholder en streng prøve , kommandoen ville være:

$ls-det| greb-jegprøve

Denne 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:

$grebstreng filnavn

For eksempel at søge efter en streng prøve i en fil med navnet testfil 1 , vi har brugt følgende kommando :

$grebmedarbejder testfil 1

Ovenstående output har returneret sætningen fra testfil 1 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:

$grebstreng filnavn1 filnavn2

For at søge efter en strengmedarbejder i vores to filer testfile1 og testfile2 har vi f.eks. Brugt følgende kommando:

$grebmedarbejder testfil 1 testfil 2

Ovenstående kommando viser alle de linjer, der indeholder strengmedarbejderen fra begge filer testfile1 og testfile2.

Du kan også bruge et jokertegn, hvis alle filnavne begynder med den samme tekst.

$grebstreng filnavn*

Ligesom hvis vi tager ovenstående eksempel, hvor vores filnavne var testfil1 og testfil2 , kommandoen ville være:

$grebmedarbejder testfil*

Søg efter en streng i en fil ved at ignorere tilfældet med strengen

Oftest er du stødt på det, når du søger efter noget ved hjælp af grep, men ikke modtager et output. Dette sker på grund af en uoverensstemmelse mellem sager, mens 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 fortælle grep at ignorere tilfælde af søgestreng ved at bruge –i flag efter grep som følger:

$greb–I strengfilnavn

Ved at bruge –i -flag vil kommandoen udføre store og små ufølsomme søgninger og returnere alle de linjer, der indeholder strengen medarbejder i det uden at tage højde for bogstaverne er i 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 et slutord. Ved at gøre dette behøver du ikke at skrive hele linjen med kommandoen grep. Følgende syntaks kan bruges til dette formål.

$grebstartende søgeord.*endingKeyword filnavn

For at søge efter en linje i en fil med navnet testfile1, der starter med strengen dette og slutter med strengdataene, har vi f.eks. Brugt følgende kommando:

$grebdet her.*datatestfil1

Det udskriver hele linjen fra testfil 1 indeholdende udtrykket (startnøgleordet dette og det endelige søgeordsdata).

Udskriv et bestemt antal linjer efter/før søgestrengen

Du kan også vise det specifikke antal linjer i en fil før/efter en strengmatch sammen med selve den matchede streng. Følgende syntaks kan bruges til dette formål:

$greb -TIL <N>streng filnavn

Det viser N antal linjer, efter at strengen er matchet i den angivne fil, herunder den matchede streng.

For eksempel er dette vores prøvefil navngivet testfil2 .

Følgende kommando udsender den matchede linje, der indeholder strengen medarbejder , sammen med de 2 linjer efter den.

$greb-TIL2–Jeg medarbejder testfil2

Tilsvarende skal følgende syntaks bruges til at vise N antal linjer før den matchede streng i en bestemt fil:

$greb -B <N>streng filnavn

For at få vist N antal linjer omkring strengen i en bestemt fil, skal du bruge følgende syntaks:

$greb -C <N>streng filnavn

Fremhævning af søgningen

Grep som standard udskriv matchede linjer, men viser ikke, hvilken del af linjen der matches. Hvis du bruger –farveindstilling med grep, viser det, 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:

$grebstreng 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. Det returnerer kun antallet af kampe frem for selve kampene. Følgende syntaks kan bruges til dette formål:

$greb–C streng filnavn

Dette er vores prøvefil ligner:

Følgende er et eksempel på en kommando, der returnerede antallet af gange ordet fil dukkede op i en fil med navnet testfil3 .

Omvendt søgning

Nogle gange vil du udføre en omvendt søgning, der viser alle linjer undtagen det, der matchede input. For at gøre det skal du blot bruge –v -flag efterfulgt af grep:

$greb–V streng filnavn

For eksempel at vise alle linjerne i en fil testfil3 der ikke indeholder ordet konto i dem, har vi brugt følgende kommando:

$greb–V kontotestfil3

Brug af Grep med andre kommandoer

Grep kan også bruges til at filtrere det krævede resultat fra forskellige kommandoer. For eksempel fra passende - installeret liste kommandoutput, vil du kun finde de pakker, der blev installeret automatisk, du kan filtrere resultatet ved hjælp af grep som følger:

$passende-installeretliste| grebautomatisk

På samme måde giver lscpu detaljerede oplysninger om CPU'en. Hvis du bare er interesseret i oplysningerne om CPU -arkitekturen, kan du filtrere det ud ved hjælp af følgende kommando:

$lscpu| grebArkitektur

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 skal se på store konfigurationer eller logge filer og skumme nyttige oplysninger igennem dem.