Grep Command Tutorial - Sådan søger du efter en fil i Linux og Unix med rekursivt find
grep
stå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.
grep
kommer 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 grep
med 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 grep
kan 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 grep
kommando 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 grep
kommer 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, -c
ville 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 grep
matcher strenge, der indeholder det angivne mønster. Dette betyder, at grep yo grep.txt
der udskrives de samme resultater som grep yo grep.txt
fordi 'yo' kan findes i dig. Tilsvarende 'ou'.
Med muligheden -w
, grep
sikrer, 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
grep
Udskriver som standard linjen, hvor det matchede mønster findes. Med mulighed -o
er 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 1
betyder en linje efter den matchede linje og -B 1
betyder 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, -C
ville blive brugt til -A
og -B
.
9. -R
(--ereference-rekursiv) - rekursiv søgning
grep
Kan 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 -R
bliver 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
grep
tillader 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 grep
matcher 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
grep
er 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
.