Grep Command Tutorial - Sådan søger du efter en fil i Linux og Unix med rekursivt find

grepstår for Globally Search For Regular Expression og Print out . Det er et kommandolinjeværktøj, der bruges i UNIX- og Linux-systemer til at søge i et bestemt mønster i en fil eller en gruppe af filer.

grepkommer med mange muligheder, der giver os mulighed for at udføre forskellige søgningsrelaterede handlinger på filer. I denne artikel vil vi se på, hvordan man bruger grepmed de tilgængelige muligheder såvel som grundlæggende regulære udtryk til søgning af filer.

Sådan bruges grep

Uden at give nogen mulighed grepkan det bruges til at søge efter et mønster i en fil eller en gruppe af filer. Syntaksen er:

grep ''  

Bemærk, at der kræves enkelt eller dobbelt anførselstegn omkring teksten, hvis det er mere end et ord.

Du kan også bruge jokertegnet (*) til at vælge alle filer i et bibliotek.

Resultatet af dette er forekomsterne af mønsteret (ved den linje, det findes) i filen / filerne. Hvis der ikke er nogen match, udskrives der ingen output til terminalen.

Sig for eksempel, at vi har følgende filer (kaldet grep.txt):

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

Den følgende grepkommando søger efter alle forekomster af ordet 'dig':

grep you grep.txt 

Resultatet for dette er:

Hello, how are you Nice to meet you 

you forventes at have en anden farve end den anden tekst for let at identificere, hvad der blev søgt efter.

Men grepkommer med flere muligheder, der hjælper os med at opnå mere under en søgning. Lad os se på ni af dem, mens vi anvender dem til eksemplet ovenfor.

Valgmuligheder brugt med grep

1. -n(--line-nummer) - viser linjenumre

Dette udskriver matchene for teksten sammen med linjenumrene. Hvis du ser på det resultat, vi har ovenfor, vil du bemærke, at der ikke er nogen linjenumre, kun kampene.

grep you grep.txt -n 

Resultat:

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

2. -c(--count) - udskriver antallet af linjer med matches

grep you grep.txt -c 

Resultat:

2 

Bemærk, at hvis der var et andet 'dig' på linje en, -cville indstillingen stadig udskrive 2. Dette skyldes, at det drejer sig om antallet af linjer, hvor matches vises, ikke antallet af matches.

3. -v(--invert-match) - udskriver de linjer, der ikke matcher det angivne mønster

grep you grep.txt -v -n 

Resultat:

2. I am grep 

Bemærk, at vi også brugte mulighed -n? Ja, du kan anvende flere muligheder i en kommando.

4. -i(--ignore-case) - bruges til ufølsomhed i sager

# 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) - udskriv filnavne, der matcher 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 strenge, der indeholder det angivne mønster. Dette betyder, at grep yo grep.txtder udskrives de samme resultater som grep yo grep.txtfordi 'yo' kan findes i dig. Tilsvarende 'ou'.

Med muligheden -w, grepsikrer, at kampe er nøjagtig det samme mønster som angivet. Eksempel:

grep yo grep.txt -w 

Resultat:

Intet resultat!

7. -o(--only-matching) - udskriv kun det matchede mønster

grepUdskriver som standard linjen, hvor det matchede mønster findes. Med mulighed -oer kun det matchede mønster udskrevet linje for linje. Eksempel:

grep yo grep.txt -o 

Resultat:

yo 

8. -A(--after-context) og -B(--before-context) - udskriv linjerne efter og før (henholdsvis) det matchede mønster

grep grep grep.txt -A 1 -B 1 

Resultat:

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

Dette matchede mønster er på linje 2. -A 1betyder en linje efter den matchede linje og -B 1betyder en linje før den matchede linje.

Der er også en -C(--context) mulighed, der er lig med -A+ -B. Den værdi, der sendes til, -Cville blive brugt til -Aog -B.

9. -R(--ereference-rekursiv) - rekursiv søgning

grepKan som standard ikke søge i mapper. Hvis du prøver at gøre det, får du en fejl ("Er en mappe"). Med mulighed -Rbliver søgning af filer i kataloger og underkataloger mulig. Eksempel:

grep you . 

Resultat:

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

Regelmæssige udtryk for mønstre

greptillader også grundlæggende regulære udtryk til angivelse af mønstre. To af dem er:

1. ^pattern- start af en linje

Dette mønster betyder, at den grepmatcher strengene, hvis linjer begynder med den streng, der er angivet efter ^. Eksempel:

grep ^I grep.txt -n 

Resultat:

2: I 

2. pattern$- slutningen af ​​en linje

I modsætning til ^, $der anført mønstre, der vil blive matchet hvis den linje enderne med strengen før $. Eksempel:

grep you$ grep.txt 

Resultat:

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

Pak ind

greper et kraftfuldt værktøj til søgning af filer i terminalen. At forstå, hvordan man bruger det, giver dig mulighed for nemt at finde filer via terminalen.

Der er flere muligheder knyttet til dette værktøj. Du kan finde med man grep.