„Grep“ komandų pamoka - kaip ieškoti failo sistemoje „Linux“ ir „Unix“ naudojant rekursinį radimą

grepreiškia „ Visuotinė reguliarios išraiškos paieška ir spausdinimas“ . Tai komandinės eilutės įrankis, naudojamas UNIX ir „Linux“ sistemose, norint ieškoti nurodyto šablono faile ar failų grupėje.

grepyra daugybė galimybių, leidžiančių mums atlikti įvairius su paieška susijusius veiksmus failuose. Šiame straipsnyje mes apžvelgsime, kaip naudoti grepsu galimomis parinktimis ir pagrindinėmis reguliariomis išraiškomis ieškant failų.

Kaip naudoti grep

Neperduodamas jokios parinkties, grepgali būti naudojamas ieškant šablono faile ar failų grupėje. Sintaksė yra:

grep ''  

Atkreipkite dėmesį, kad aplink tekstą reikia rašyti vieną arba dvi kabutes, jei tai yra daugiau nei vienas žodis.

Taip pat galite naudoti pakaitos simbolį (*), kad pasirinktumėte visus failus kataloge.

To rezultatas - šablono (pagal rastą eilutę) atvejai faile (-uose). Jei nėra atitikties, į terminalą nebus spausdinama jokia išvestis.

Pavyzdžiui, tarkime, kad turime šiuos failus (vadinamus grep.txt):

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

Ši grepkomanda ieškos visų žodžio „jūs“ atvejų:

grep you grep.txt 

To rezultatas:

Hello, how are you Nice to meet you 

you tikimasi, kad jos spalva bus kitokia nei kito teksto, kad būtų galima lengvai nustatyti, ko ieškota.

Tačiau greppateikiama daugiau galimybių, kurios padeda pasiekti daugiau paieškos metu. Pažvelkime į devynis iš jų, pritaikydami juos aukščiau pateiktam pavyzdžiui.

Naudojamos parinktys su grep

1. -n(- line-number) - nurodykite eilutės numerius

Tai išspausdina teksto atitikmenis kartu su eilučių numeriais. Jei pažvelgsite į rezultatą, kurį turime aukščiau, pastebėsite, kad nėra eilutės numerių, o tik rungtynės.

grep you grep.txt -n 

Rezultatas:

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

2. -c(--count) - išspausdina rungtynių eilučių skaičių

grep you grep.txt -c 

Rezultatas:

2 

Atkreipkite dėmesį, kad jei pirmoje eilutėje -cbūtų kitas „tu“, parinktis vis tiek būtų atspausdinta 2. Taip yra todėl, kad jis susijęs su eilučių, kuriose rodomos atitikmenys, skaičiumi, o ne atitikmenų skaičiumi.

3. -v(--invert-match) - spausdina linijas, neatitinkančias nurodyto modelio

grep you grep.txt -v -n 

Rezultatas:

2. I am grep 

Atkreipkite dėmesį, kad mes taip pat pasinaudojome pasirinkimu -n? Taip, vienoje komandoje galite pritaikyti kelias parinktis.

4. -i(--ignore-case) - vartojamas nejautrumui didinti

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

Rezultatai:

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

5. -l(--files-with-match) - spausdinkite failų pavadinimus, atitinkančius šabloną

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

Rezultatai:

# 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 

Pagal numatytuosius nustatymus grepatitinka eilutes, kuriose yra nurodytas šablonas. Tai reiškia, kad grep yo grep.txtbus atspausdinti tie patys rezultatai, grep yo grep.txtnes „yo“ galima rasti jumyse. Panašiai ir „ou“.

Pasirinkus šią parinktį -w, grepužtikrinama, kad atitikmenys atitiktų nurodytą modelį. Pavyzdys:

grep yo grep.txt -w 

Rezultatas:

Nėra rezultatų!

7. -o(--tik suderinta) - spausdinkite tik suderintą raštą

Pagal numatytuosius nustatymus grepspausdina liniją, kurioje randamas suderintas raštas. Pasirinkus -o, tik suderintas raštas spausdinamas eilute po eilutės. Pavyzdys:

grep yo grep.txt -o 

Rezultatas:

yo 

8. -A(- po konteksto) ir -B(- prieš kontekstą) - atspausdinkite eilutes po ir prieš (atitinkamai) suderintą modelį

grep grep grep.txt -A 1 -B 1 

Rezultatas:

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

Šis suderintas raštas yra 2 eilutėje. -A 1Reiškia vieną eilutę po suderintos linijos ir -B 1reiškia vieną eilutę prieš suderintą liniją.

Taip pat yra -C(--context) parinktis, lygi -A+ -B. Perduota vertė -Cbus naudojama -Air -B.

9. -R(--dereference-recursive) - rekursyvi paieška

Pagal numatytuosius nustatymus grepnegalima ieškoti kataloguose. Jei bandysite tai padaryti, gausite klaidą („Ar katalogas“). Pasirinkus parinktį -R, failų paieška kataloguose ir pakatalogiuose tampa įmanoma. Pavyzdys:

grep you . 

Rezultatas:

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

Reguliarūs raštų posakiai

greptaip pat leidžia pagrindines reguliariąsias išraiškas šablonams nurodyti. Du iš jų yra:

1. ^pattern- linijos pradžia

Šis modelis reiškia, kad greptestamentas atitiks eilutes, kurių eilutės prasideda eilute, nurodyta vėliau ^. Pavyzdys:

grep ^I grep.txt -n 

Rezultatas:

2: I 

2. pattern$- eilutės pabaiga

Priešingai ^, $nurodo modelius, kurie bus suderinti, jei eilutė baigsis eilute anksčiau $. Pavyzdys:

grep you$ grep.txt 

Rezultatas:

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

Apvyniokite

grepyra galingas įrankis failams ieškoti terminale. Supratimas, kaip jį naudoti, suteikia galimybę lengvai rasti failus per terminalą.

Prie šio įrankio pridedama daugiau parinkčių. Galite rasti su man grep.