Ar anksčiau naudojote grep? Dažniausiai pagrindinį „grep“ triuką galima atlikti didžiąją dalį darbo. Tačiau „grep“ siūlo daugybę būdų atlikti paiešką ir sureguliuoti išvestį į labiau pritaikomą versiją. Šiame straipsnyje patikrinkime, kaip naudojama „grep“ komanda.
Grep naudojimas
Tikrinimas egzistavimo
Jei naudojate bet kokį „Linux“ platinimą, tada jau turite įdiegtą „grep“. Paleiskite šią komandą terminale.
grep - versija
Ši komanda naudojama norint parodyti šiuo metu įdiegto grep versiją. Dabar mums reikia demonstracinio failo. Mano atveju sugeneruosiu tekstinį failą, kuriame bus visi mano sistemoje įdiegti paketai.
Pagrindai
Pagrindinis grep naudojimas yra toks.
grepArba, norėdami lengviau suprasti, naudokite šį.
grepTokiu atveju „grep“ atliks paiešką faile ir išspausdins visas eilutes, kuriose yra šablonas (paieškos terminas).
grep python ~ / Desktop / PackageList.txt
Grepas ieškojo failo „PackageList.txt “Aš sugeneravau anksčiau ir atspausdinau visas eilutes, kuriose yra„ python “.
Tą pačią operaciją galima atlikti ir kitu būdu. Peržiūrėkite šį pavyzdį.
katė ~ / Desktop / PackageList.txt | grep pitonas
Čia, naudodamas komandą „cat“, išsiunčiau failo „PackageList.txt “grepuoti. Naudodamas katės išvestį, grep atliko paiešką ir išspausdino eilutes, kuriose yra paieškos terminas.
Dabar ateina įdomus dalykas. Tiesiog pažodžiui galite sukrauti kelias grep komandas.
katė ~ / Desktop / PackageList.txt | grep - | grep p | grep pitonas
Pirmasis „grep“ filtruoja iki linijų brūkšneliu, antrasis - iki linijų su p, o galutinis „grep“ filtruoja iki linijų su pitonu. Yra logiškas?
Didžiųjų ir mažųjų raidžių jautrumas
Atliekant paiešką, svarbiausias klausimas yra didžiųjų ir mažųjų raidžių jautrumas. Pagal numatytuosius nustatymus „grep“ skiria didžiosios ir mažosios raidės.
Pavyzdžiui, ieškant „Python“ nebus rodomi jokie rezultatai.
katė ~ / Desktop / PackageList.txt | grep Python
Norėdami, kad „grep“ raidė būtų „nejautri“, pridėkite šią parinktį.
katė ~ / Desktop / PackageList.txt | grep -i Python
Failų paieška
Tarkime, kad turite katalogą su daugybe tekstinių failų. Jūsų tikslas yra nustatyti failą (-us), kuriame yra arba nėra modelio (paieškos terminas).
Manau, kad šis metodas yra labai naudingas ieškant žurnalo failų krūvoje. Kadangi neturiu laiko atidaryti ir patikrinti kiekvieno failo rankiniu būdu, turiu atlikti grep, kad atlikčiau darbą už mane.
Norėdami išvardyti failus, kuriuose yra atitikmuo, naudokite „-l“ vėliavą.
grep -l
Kaip rodo rezultatas, terminas „python“ yra visuose 3 „Desktop“ kataloge esančiuose failuose.
Norėdami išvardyti failus be atitikties, naudokite „-L“ vėliavą.
grep -L
"Nesutampa.txt “yra vienintelis failas, kuriame nėra termino„ python “.
Apversta paieška
Numatytasis „grep“ elgesys yra tai, kad dešinėje spausdinamos tik eilutės su atitinkamu raštu? Atėjo laikas pakeisti procesą. Šį kartą spausdinsime tik eilutes BE BE atitinkančio rašto.
Tiesiog perduokite „-v“ parinktį, kad greptumėte.
katė ~ / Desktop / PackageList.txt | grep -i -v Python
Linijų spausdinimas prieš / po rungtynių
Pagal numatytuosius nustatymus „grep“ spausdins tik eilutę, atitinkančią paieškos modelį. Naudodamiesi šia technika, galite pasakyti grep, kad atspausdintų linijas ir prieš / po rungtynių.
Norėdami spausdinti linijas prieš rungtynes, naudokite šią struktūrą.
grep -B
Čia 5 yra skaičiaus eilutė, kurią grep atspausdins PRIEŠ atitikimo eilutę.
Norėdami spausdinti eilutes po rungtynių, naudokite šią.
grep -A
Kaip spausdinti prieš ir po atitikimo eilutės? Tokiu atveju naudokite „-C“ vėliavą.
grep -C
Eilės numeris
Kai grep rodo išvestį, jis nemini eilutės numerio. Susietam (-iems) eilutės (-ių) numeriui naudokite „-n“ vėliavą.
grep -n
Vienas žodis
Jei naudojama vėliava „-w“, „grep“ modelį traktuos kaip visą žodį.
grep -w
„Grep“ paieškos apribojimas
„Grep“ leidžia nurodyti faile ieškomų eilučių skaičių. Šis metodas yra naudingas, jei turite reikalų su dideliu failu (pvz., Sistemos žurnalu). Naudokite vėliavą „-m“.
grep -m
Rekursinė paieška
Tai yra viena iš labiausiai naudingų funkcijų, kurias „grep“ siūlo intensyviam naudojimui. „Grep“ gali rekursyviai ieškoti kataloge ir rasti visas atitiktis iš visų failų, su kuriais susiduria.
grep -RArba,
grep -r
Aš dažnai randu naudodamas šią rekursyvią funkciją kartu su „-l“ vėliava.
Tylus režimas
„Grep“ galima paleisti „ramiu“ režimu. Kai veikia „tylus“ režimas, „grep“ nespausdins jokios išvesties į terminalą. Vietoj to jis grąžins 0 (bent jau buvo rasta atitiktis) arba 1 (atitiktis nerasta).
grep -qaidas $?
Regex
„Grep“ taip pat leidžia atlikti regex (reguliariosios išraiškos) paieškas. Tai padidina visiškai naują grep, kaip paieškos įrankio, sudėtingumą ir tinkamumą.
Pvz., Skliausteliuose galite ieškoti tiek „per“, tiek „du“ vienu metu.
katė ~ / darbalaukis / gpl-3.0.txt | grep t [wo] o
Šis kitas pavyzdys atspausdins eilutę tik tuo atveju, jei atitiktis bus pačioje eilutės pradžioje.
grep ^ GNU ~ / Desktop / gpl-3.0.txt
Jei norite suderinti pabaigą, naudokite šią.
grep you $ ~ / Desktop / gpl-3.0.txt
Jei norite naudoti „Perl“ regex, naudokite „-P“ vėliavą. Tai traktuos modelį kaip „Perl“ regex.
grep -PPaskutinės mintys
„Grep“ siūlo daugybę būdų, kaip pritaikyti paieškos funkciją. „Regex“ prieinamumas atveria visiškai naują horizontą galimam grep naudojimui. Kietas dalykas yra tai, kad galite naudoti ir bendrą, ir „Perl“ regex; kad ir su kuo jaustumėtės.
Norėdami gauti išsamų paaiškinimą, visada ieškokite vyro puslapyje.
vyras grep
Cheers!