Grepi käsuõpetus - kuidas otsida faili Linuxis ja Unixis rekursiivse otsingu abil

greptähistab ülemaailmset regulaaravaldise otsimist ja printimist . See on käsurea tööriist, mida kasutatakse UNIX- ja Linux-süsteemides failis või failirühmas määratud mustri otsimiseks.

grepkaasas palju võimalusi, mis võimaldavad meil failidega mitmesuguseid otsinguga seotud toiminguid teha. Selles artiklis uurime, kuidas grepfailide otsimiseks kasutada koos saadaolevate valikute ja põhiliste regulaaravaldistega.

Kuidas kasutada grep

Ühtegi valikut grepedastamata saab seda kasutada failist või failirühmast mustri otsimiseks. Süntaks on:

grep ''  

Pange tähele, et kui teksti on rohkem kui üks sõna, on teksti ümber vaja kasutada ühe- või topelt jutumärke.

Kõigi kataloogis olevate failide valimiseks võite kasutada ka metamärke (*) .

Selle tulemuseks on mustri (leitud joone järgi) esinemine failis (failides). Kui vastet pole, ei prindita terminali väljundit.

Oletame näiteks, et meil on järgmised failid (nimega grep.txt):

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

Järgmine grepkäsk otsib kõiki sõna „teie” esinemisi:

grep you grep.txt 

Selle tulemus on:

Hello, how are you Nice to meet you 

you eeldatakse, et otsitava hõlpsaks tuvastamiseks on selle värv erinev kui teisel tekstil.

Kuid grepkaasas on rohkem võimalusi, mis aitavad meil otsingutoimingu ajal rohkem saavutada. Vaatame neid üheksa, rakendades neid ülaltoodud näite suhtes.

Kasutatavad valikud koos grep

1. -n(- line-number) - loetlege rea numbrid

Sellega prinditakse teksti vasted koos rea numbritega. Kui vaatate ülaltoodud tulemust, märkate, et pole reanumbreid, on ainult vasted.

grep you grep.txt -n 

Tulemus:

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

2. -c(--count) - prindib vastete ridade arvu

grep you grep.txt -c 

Tulemus:

2 

Pange tähele, et kui ühel real -coleks veel üks „sina”, prinditaks variant ikkagi 2. Selle põhjuseks on asjaolu, et see puudutab vastete kuvamise ridade arvu, mitte vastete arvu.

3. -v(--invert-match) - prindib jooned, mis ei vasta määratud mustrile

grep you grep.txt -v -n 

Tulemus:

2. I am grep 

Pange tähele, et me kasutasime ka võimalust -n? Jah, ühes käsus saate rakendada mitut valikut.

4. -i(--ignore-case) - kasutatakse juhtumite tundetuks muutmiseks

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

Tulemused:

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

5. -l(--files-with-match) - printige mustrile vastavad failinimed

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

Tulemused:

# 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 

Vaikimisi grepsobib stringid, mis sisaldavad määratud mustrit. See tähendab, et grep yo grep.txtsee prindib samad tulemused kui grep yo grep.txtsellepärast, et 'yo' võib leida teist. Samamoodi "ou".

Mis võimalus -w, greptagab vasteid on täpselt sama mustriga nagu täpsustatud. Näide:

grep yo grep.txt -w 

Tulemus:

Tulemust pole!

7. -o(--only-matching) - printige ainult sobitatud muster

Vaikimisi grepprindib rida, kust sobitatud muster leitakse. Mis võimalus -o, vaid tasakaalustatud muster on trükitud rida-realt. Näide:

grep yo grep.txt -o 

Tulemus:

yo 

8. -A(- pärast konteksti) ja -B(- enne konteksti) - printige jooned pärast ja pärast (vastavalt) sobitatud mustrit

grep grep grep.txt -A 1 -B 1 

Tulemus:

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

See sobitatud muster on real 2. -A 1tähendab ühte joont sobitatud joone järel ja -B 1üht joont enne sobitatud joont.

Seal on ka -Cvariant (--context), mis on võrdne -A+ -B. Edastatud väärtust -Ckasutatakse -Aja jaoks -B.

9. -R(--dereference-rekursiivne) - rekursiivne otsing

Vaikimisi grepei saa kataloogidest otsida. Kui proovite seda teha, saate vea ("Kas kataloog"). Mis võimalus -R, otsides failid kataloogid ja alamkataloogid muutub võimalikuks. Näide:

grep you . 

Tulemus:

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

Mustrite regulaaravaldised

greplubab mustrite täpsustamiseks ka põhilisi regulaaravaldisi. Kaks neist on:

1. ^pattern- joone algus

See muster tähendab, et greptest sobib stringidega, mille read algavad pärast määratud stringiga ^. Näide:

grep ^I grep.txt -n 

Tulemus:

2: I 

2. pattern$- rea lõpp

Erinevalt ^, $täpsustab mustreid, mis on sobitatud kui liin lõpeb string enne $. Näide:

grep you$ grep.txt 

Tulemus:

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

Tõmba otsad kokku

grepon võimas tööriist terminalis failide otsimiseks. Selle kasutamise mõistmine annab teile võimaluse terminali kaudu faile hõlpsasti leida.

Sellele tööriistale on lisatud rohkem võimalusi. Leiate koos man grep.