Grep Command Tutorial - Hvordan søke etter en fil i Linux og Unix med Recursive Find

grepstår for Globally Search For Regular Expression og Print out . Det er et kommandolinjeverktøy som brukes i UNIX- og Linux-systemer for å søke i et spesifisert mønster i en fil eller gruppe av filer.

grepkommer med mange alternativer som lar oss utføre forskjellige søkerelaterte handlinger på filer. I denne artikkelen vil vi se på hvordan du bruker grepde tilgjengelige alternativene, samt grunnleggende regulære uttrykk for å søke i filer.

Hvordan å bruke grep

Uten å passere noe alternativ, grepkan det brukes til å søke etter et mønster i en fil eller gruppe av filer. Syntaksen er:

grep ''  

Vær oppmerksom på at det er nødvendig med enkle eller doble anførselstegn rundt teksten hvis det er mer enn ett ord.

Du kan også bruke jokertegnet (*) til å velge alle filer i en katalog.

Resultatet av dette er forekomsten av mønsteret (ved linjen det er funnet) i filen (e). Hvis det ikke samsvarer, vil ingen utskrifter skrives ut til terminalen.

Si for eksempel at vi har følgende filer (kalt grep.txt):

Hello, how are you I am grep Nice to meet you 

Følgende grepkommando vil søke etter alle forekomster av ordet 'du':

grep you grep.txt 

Resultatet for dette er:

Hello, how are you Nice to meet you 

you forventes å ha en annen farge enn den andre teksten for å enkelt identifisere hva det ble søkt etter.

Men grephar flere alternativer som hjelper oss å oppnå mer under en søkeoperasjon. La oss se på ni av dem mens vi bruker dem på eksemplet ovenfor.

Alternativer brukt med grep

1. -n(--linjenummer) - viser linjenumre

Dette skriver ut treff for teksten sammen med linjenumrene. Hvis du ser på resultatet vi har ovenfor, vil du merke at det ikke er linjenumre, bare kampene.

grep you grep.txt -n 

Resultat:

1: Hello, how are you 3: Nice to meet you 

2. -c(--count) - skriver ut antall linjer med treff

grep you grep.txt -c 

Resultat:

2 

Merk at hvis det var et annet "deg" på linje en, -cville alternativet fortsatt skrive ut 2. Dette er fordi det er opptatt av antall linjer der treffene vises, ikke antall treff.

3. -v(--invert-match) - skriver ut linjene som ikke samsvarer med det angitte mønsteret

grep you grep.txt -v -n 

Resultat:

2. I am grep 

Legg merke til at vi også brukte alternativ -n? Ja, du kan bruke flere alternativer i en kommando.

4. -i(--ignore-case) - brukes til sak ufølsomhet

# command 1 grep You grep.txt # command 2 grep YoU grep.txt -i 

Resultater:

# result 1 # no result # result 2 Hello, how are you Nice to meet you 

5. -l(--files-with-matches) - skriv ut filnavn som samsvarer med et mønster

# command 1 grep you grep.txt -l # command 2 grep You grep.txt -i -l 

Resultater:

# result 1 grep.txt # result 2 # all files in the current directory that matches # the text 'You' case insensitively 
#### 6. `-w` (--word-regexp) - print matches of the whole word 

Som standard grepmatcher strenger som inneholder det angitte mønsteret. Dette betyr at grep yo grep.txtvil skrive ut de samme resultatene som grep yo grep.txtfordi "yo" kan bli funnet i deg. Tilsvarende 'ou'.

Med alternativet -w, grepsørger det for at fyrstikkene er nøyaktig det samme mønsteret som spesifisert. Eksempel:

grep yo grep.txt -w 

Resultat:

Inget resultat!

7. -o(--only-matching) - skriv bare ut det matchede mønsteret

Skriver som standard greput linjen der det matchede mønsteret er funnet. Med alternativ -oblir bare det matchede mønsteret skrevet ut linje for linje. Eksempel:

grep yo grep.txt -o 

Resultat:

yo 

8. -A(--after-context) og -B(--before-context) - skriv ut linjene etter og før (henholdsvis) det matchede mønsteret

grep grep grep.txt -A 1 -B 1 

Resultat:

Hello, how are you I am grep Nice to meet you 

Dette matchede mønsteret er på linje 2. -A 1betyr en linje etter den samsvarende linjen og -B 1betyr en linje før den matchede linjen.

Det er også et -C(--context) alternativ som er lik -A+ -B. Verdien som sendes til -Cvil bli brukt til -Aog -B.

9. -R(--ereference-rekursiv) - rekursivt søk

grepKan som standard ikke søke i kataloger. Hvis du prøver å gjøre det, får du en feil ("Er en katalog"). Med alternativ -Rblir søking av filer i kataloger og underkataloger mulig. Eksempel:

grep you . 

Resultat:

# 'you' matches in a folders # and files starting from the # current directory 

Regelmessige uttrykk for mønstre

greptillater også grunnleggende regulære uttrykk for å spesifisere mønstre. To av dem er:

1. ^pattern- start på en linje

Dette mønsteret betyr at grepvil matche strengene hvis linjer begynner med strengen spesifisert etter ^. Eksempel:

grep ^I grep.txt -n 

Resultat:

2: I 

2. pattern$- slutten på en linje

I motsetning til ^, $spesifiserer mønstre som vil bli matchet hvis linjen ender med strengen før $. Eksempel:

grep you$ grep.txt 

Resultat:

1: Hello, how are you 3: Nice to meet you 

Pakk opp

greper et kraftig verktøy for å søke etter filer i terminalen. Å forstå hvordan du bruker den gir deg muligheten til enkelt å finne filer via terminalen.

Det er flere alternativer knyttet til dette verktøyet. Du kan finne med man grep.